2017-04-07 2 views
1

En python/pymongo, la création d'index géospatial est assez trivial:Comment créer l'index géospatial dans MongoDB en C++

db.collection.create_index([("loc", GEO2D)], min=-100, max=100) 

Après que je peux insérer des données en utilisant le champ "loc".

Mais en C++/mongocxx, après avoir fait référence au document mongocxx (http://mongodb.github.io/mongo-cxx-driver/mongocxx-v3/tutorial/) et à GeoSpatial docement, je n'arrive toujours pas à comprendre comment procéder.

Quelqu'un pourrait-il me montrer comment gérer l'index géospatial en C++? Merci d'avance.

Répondre

2

Vous pouvez créer un index GeoSpatial avec le pilote C++ de la même manière que le pilote Python; la différence principale est que, au lieu de passer le minimum et le maximum en tant qu'arguments directs à create_index, ils sont plutôt définis dans un objet options::index qui est ensuite passé à create_index. Voici un programme court qui crée l'index décrit ci-dessus en utilisant le pilote C++:

#include <bsoncxx/builder/basic/document.hpp> 
#include <bsoncxx/builder/basic/kvp.hpp> 
#include <mongocxx/client.hpp> 
#include <mongocxx/instance.hpp> 
#include <mongocxx/options/index.hpp> 
#include <mongocxx/uri.hpp> 

using namespace mongocxx; 
using bsoncxx::builder::basic::kvp; 

int main() { 
    instance inst{}; 

    client conn{uri{}}; 
    auto coll = conn["db_name"]["coll_name"]; 

    bsoncxx::builder::basic::document index_doc; 
    index_doc.append(kvp("loc", "2d")); 

    coll.create_index(
     index_doc.extract(), 
     options::index{} 
      .twod_location_min(-100).twod_location_max(100)); 

}