Récemment, je me suis retrouvé dans le même problème. Pour savoir si un create_index
a réussi, vous devez vous attendre à ce qu'aucune exception ne soit levée et vérifier s'il existe une clé avec "nom" dans le fichier retourné document::value
. Un exemple complet pour savoir comment vérifier la réussite de l'opération create_index est présenté ci-dessous (extrait principalement des tests liés à la collection dans le document 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;
}
Désolé pour cette réponse très tardive mais je viens de la trouver aujourd'hui, en cherchant un autre sujet lié à mongo-driver-cxx.
J'espère que ça marche toujours pour vous !