我正在使用mongocxx使用以下代码在Mongo中创建索引:
auto index_specification = bsoncxx::builder::stream::document{} << "_tablename" << 1 << "rowuuid" << 1 << bsoncxx::builder::stream::finalize;
auto result = coll.create_index(std::move(index_specification));
但是,我不知道如何检查它是否成功。我试图打印出结果:
printf((const char*) result.view().data());
但我只是得到一个&amp;字符。我一直在寻找互联网,但我找不到答案。
答案 0 :(得分:2)
最近我发现自己遇到了同样的问题。要知道create_index
操作是否成功,您应该不会抛出任何异常并检查是否存在一个带有&#34; name&#34;在返回的document::value
中。下面是一个知道如何检查成功的create_index操作的完整示例(主要从与src/mongocxx/tests/collection.cpp
中的集合相关的测试中提取):
bool success = false;
try {
mongocxx::client a {
mongocxx::uri {
"mongodb://localhost:27017"
}
};
mongocxx::database database = a.database("test");
mongocxx::collection collection = database["test-collection"];
collection.drop();
collection.insert_one({}); // Ensure that the collection exists.
bsoncxx::document::value index = bsoncxx::builder::stream::document {} << "a" << 1 << bsoncxx::builder::stream::finalize;
std::string indexName {
"myName"
};
mongocxx::options::index options {};
options.name(indexName);
bsoncxx::document::value result = collection.create_index(index.view(), options);
bsoncxx::document::view view = result.view();
if (not view.empty() && view.find("name") != view.end()) {
success = true;
std::cout << bsoncxx::to_json(view) << std::endl;
}
} catch (mongocxx::exception e) {
std::cerr << e.what() << ":" << e.code().value() << std::endl;
}
对于这个非常晚的答案感到抱歉,但我今天才发现,正在搜索与mongo-driver-cxx相关的其他主题。
我希望它仍然适合你!