2017-04-07 4 views
1

를 사용하여 MongoDB에서 지리 공간 인덱스를 만들 수 있습니다 : 나는 "LOC"필드를 사용하여 데이터를 삽입 할 수 있습니다 그 후어떻게 지리 공간 색인을 작성하는 것은 매우 간단하다, 파이썬/pymongo에서 C++

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

합니다.

하지만 mongocxx 문서 (http://mongodb.github.io/mongo-cxx-driver/mongocxx-v3/tutorial/)와 GeoSpatial docement를 참조한 후에 C++/mongocxx에서이 작업을 수행하는 방법을 아직 알 수 없습니다.

C++에서 지형 공간 인덱스를 다루는 방법을 아무에게도 보여줄 수 있습니까? 미리 감사드립니다.

답변

2

Python 드라이버와 비슷한 방법으로 C++ 드라이버로 GeoSpatial 인덱스를 만들 수 있습니다. 주요 차이점은 최소 및 최대를 직접 인수로 create_index에 전달하는 대신 options::index 개체로 설정 한 다음 create_index으로 전달한다는 것입니다.

#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)); 

}

: 다음은 C++ 드라이버를 사용하여 위에서 설명한 인덱스를 생성하는 간단한 프로그램입니다