2017-05-12 11 views
0

コレクションがあるのAzure CosmosDBがあります。ここで、フィールドgeoJSONはgeoJSON形式のレストランの場所を示します。私はこれにアクセスするためにMongoDB APIを使用しています。Mongo APIを使用してAzure CosmosDB(DocumentDB)で地理空間索引照会が機能しない

mongoシェルを使用してDBにログインすると、db.restaurants.find()を使ってすべてのドキュメントを見ることができます。 db.restaurants.createIndex({geoJSON: "2dsphere"})を使用して2dsphere地理空間インデックスを作成しました。

出力:

{ 
    "_t" : "CreateIndexesResponse", 
    "ok" : 1, 
    "createdCollectionAutomatically" : false, 
    "numIndexesBefore" : 3, 
    "numIndexesAfter" : 4 
} 

しかし、db.restaurants.getIndexes()を実行している時に、私はまだ唯一の3つのインデックスを参照してください。 This質問によると、インデックスは許可されていません。これは今の場合ですか?

さらに、そこ

{ 
      "v" : 1, 
      "key" : { 
        "DocumentDBDefaultIndex" : "2dsphere" 
      }, 
      "name" : "DocumentDBDefaultIndex_2dsphere", 
      "ns" : "<redacted>" 
} 

と呼ばれる指標であると思われるが、地理空間クエリを実行することは何も返しません。

db.restautants.find({DocumentDBDefaultIndex: {$near: {$geometry: {type: "Point", coordinates: [24.9430111, 60.166608]}, $maxDistance: 1000}}}) 

mongoシェルを使用してこのインデックスに対してジオスペースクエリを実行するにはどうすればよいですか?これはCosmosDBのバグですか?

答えて

1

あなたの説明によると、私はこの問題を私の側でチェックしました。素早く、Azure Cosmos DBでMongoChefを使用します。私のテストに基づいて、db.brucetest1.createIndex({loc:"2dsphere"})はコレクションに適用できませんでした。次のクエリでは

db.brucetest.insertMany([ 
    {DocumentDBDefaultIndex : { type: "Point", coordinates: [ -73.97, 40.77 ] },name: "Central Park",category : "Parks"}, 
    {DocumentDBDefaultIndex : { type: "Point", coordinates: [ -73.88, 40.78 ] },name: "La Guardia Airport",category : "Airport"} 
]) 

、私はあなたの問題が発生する可能性:

また、私はDocumentDBが自動的に場所フィールド DocumentDBDefaultIndexに2dsphereインデックスを作成し、その後、私は私の文書を削除し、次のように文書を挿入しました同様の issueあなたの言及に基づいて
db.brucetest.find({DocumentDBDefaultIndex:{$near:{$geometry:{type:"Point",coordinates:[-73.88, 40.78]}}}}) 

、私は機能を照会作成/更新インデックスと地理空間インデックスがAzureのCosmosDBのMongoDBの互換性レイヤに実装されていないことを想定。さらに、フィードバックhereを追加するか、これらの機能がリリースされるまで待つことができます。

+0

ありがとうございました。私はちょうど私のアプリケーションでネイティブDocumentDB APIを使うことに決めました。それには学習曲線があるので、それは私を減速させています。すぐに追加されることを願っています。 – nihil0

関連する問題