2 votes

Vérifier si mongocxx collection.create_index() a réussi.

Je crée un index dans Mongo en utilisant mongocxx avec ce code :

auto index_specification = bsoncxx::builder::stream::document{} << "_tablename" << 1 << "rowuuid" << 1 << bsoncxx::builder::stream::finalize;
auto result = coll.create_index(std::move(index_specification));

Cependant, je ne sais pas comment vérifier si cela a réussi. J'ai essayé d'imprimer le résultat avec :

printf((const char*) result.view().data());

Mais je n'obtiens qu'un & caractère. J'ai cherché sur Internet mais je n'ai pas trouvé de réponse.

2voto

JTejedor Points 611

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 !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X