2016-07-28 2 views
0

MongoDBにいくつかの興味のあるポイントを保存したいと思います。 プロパティ詳細:私はGeoNearを使用しますので 私のためのPOIは、私は2つの異なるコレクションにpoiを分離、MongoDbに(大)ジオローカライゼーションポイントを保存する方法の提案

poi = 
{ 
properties : 
    { 
    name: 'title', 
    type: 'feature'  // GEOJson 
    geometry : 
     { type: 'Point', 
      coordinates : [lng, lat] 
     }, 
    categories : ['red', 'green'] 
    }, 
    details : 
    { 
    photo: 'http://...', 
    description : 'bla bla bla.....' 
    etc... 
    } 
} 

のようなものです。まず、poi_propertiesコレクションのpois付近を調べて表示します。その後一度poiを選んだら、詳細をpoi_detailsコレクションに問い合わせます。 最初の研究では、座標のほかに、カテゴリによっても結果をフィルタリングします。クエリが

db.collection.poi_properties.find({$near: [lng, lat], categories:['red']}); 

のようになりますので、だから私はカテゴリ座標インデックスされています。

しかし、クエリは非常に高速ではありません...コレクションがかなり大きいため(エクスポートすると約200MBです)、私は推測します。この種のデータをどのように保存するかについて、有益なテクニック/バストの練習はありますか?

ありがとうございました

答えて

0

座標に地理情報インデックスがありますか?

https://docs.mongodb.com/manual/applications/geospatial-indexes/

構文は次のとおりです。

db.collection.createIndex({ <location field> : "2dsphere" }) 

次に、あなたはすぐにあなたの情報を取得し、1つのクエリを使用して結果を返すことができます。

+0

はい私はそれを持っています。それはうまくいく、少し遅い – DeLac

+0

ああ、申し訳ありませんが、あなたは地理空間インデックスを持っていないと思った。だから、あなたがexplainを使ってクエリを実行すると、それは効率的なインデックス使用率を示していますか? https://docs.mongodb.com/manual/reference/method/db.collection.explain/#db.collection.explain – Tiramisu

関連する問題