MongoDB&C++ 开发(八)建索引

来源:互联网 发布:知善恶树英语 编辑:程序博客网 时间:2024/06/07 03:52

以mongo-cxx-driver/examples中的index.cpp为例

#include <bsoncxx/builder/stream/document.hpp>#include <bsoncxx/stdx/make_unique.hpp>#include <mongocxx/client.hpp>#include <mongocxx/instance.hpp>#include <mongocxx/stdx.hpp>#include <mongocxx/uri.hpp>using bsoncxx::builder::stream::open_document;using bsoncxx::builder::stream::close_document;using bsoncxx::builder::stream::close_array;using bsoncxx::builder::stream::finalize;int main(int, char**) {    mongocxx::instance inst{};    mongocxx::client conn{mongocxx::uri{}};    auto db = conn["test"];    try {        db["restaurants"].drop();    } catch (const std::exception&) {        // Collection did not exist.    }    // Create a single field index.对单一的字段(键值对)建索引,1表示升序    {        // @begin: cpp-single-field-index        bsoncxx::builder::stream::document index_builder;        index_builder << "cuisine" << 1;        db["restaurants"].create_index(index_builder.view(), {});        // @end: cpp-single-field-index    }    // Create a compound index.建立联合索引,1表示升序,-1表示降序    {        db["restaurants"].drop();        // @begin: cpp-create-compound-index        bsoncxx::builder::stream::document index_builder;        index_builder << "cuisine" << 1 << "address.zipcode" << -1;        db["restaurants"].create_index(index_builder.view(), {});        // @end: cpp-create-compound-index    }    // Create a unique index.建立唯一索引,在缺省情况下创建的索引均不是唯一索引,建立唯一索引之后    //插入website对应键值相同的文档是会报错    {        db["restaurants"].drop();        // @begin: cpp-create-unique-index        bsoncxx::builder::stream::document index_builder;        mongocxx::options::index index_options{};        index_builder << "website" << 1;        index_options.unique(true);        db["restaurants"].create_index(index_builder.view(), index_options);        // @end: cpp-create-unique-index    }    // Create an index with storage engine options    {        db["restaurants"].drop();        // @begin: cpp-create-wt-options-index        bsoncxx::builder::stream::document index_builder;        mongocxx::options::index index_options{};        std::unique_ptr<mongocxx::options::index::wiredtiger_storage_options> wt_options =            mongocxx::stdx::make_unique<mongocxx::options::index::wiredtiger_storage_options>();        index_builder << "cuisine" << 1;        wt_options->config_string("block_allocation=first");        index_options.storage_options(std::move(wt_options));        db["restaurants"].create_index(index_builder.view(), index_options);        // @begin: cpp-create-wt-options-index    }}
原创粉丝点击