2017-11-12 10 views
0

$ geoNearを使用して、ユーザーの場所に基づいてビジネスの場所を検索しています。しかし、検索を実行すると、Mongoは1つのジオロケーションのインデックスを作成することができますが、一部のビジネスでは複数のロケーションがあり、最も近い結果を見つけるためにロケーションインデックスを有効にしたいと考えています。集計された検索で複数の地理的位置を検索/インデックス登録するにはどうすればよいですか?

これは私が現在持っているものです。

location : { 
     type: { type: String, default: "Point" }, 
     coordinates: { type: [Number], default: [115.8575,-31.953] }, 
    }, 

をそして、これは私が持っているしたいものです。

location : [{ 
      name: "Suburb 1", 
     type: { type: String, default: "Point" }, 
     coordinates: { type: [Number], default: [115.8575,-31.953] }, 
    }, 
    { 
      name: "Suburb 2", 
     type: { type: String, default: "Point" }, 
     coordinates: { type: [Number], default: [115.8575,-31.953] }, 
    }], 
検索は、最も近い結果を見つけるだろう

。これを行う理想的な方法はありますか?

おかげ

答えて

0

あなたが$geoNearを使用したい場合、あなたはあなたのdata modelを再設計を検討してください。 $geoNearがあなたに最も近い場所(ソート済み)を返し、geospatial-index(es)が必要です。

提案は、事業所ごとに単一の文書エントリを保存することです。

またTutorial: Geospatial便利特に例を見つけることができます。

+0

おそらく新しい店舗は、場所のため簡単ですか?次に、それが参照しているビジネスコレクションの参照を持つことができますか?それはそれを処理するより良い方法でしょうか? –

+0

ドキュメントの残りの情報に応じて、できるだけ多くのビジネスメタデータを埋め込むことができます。私。ビジネス名/場所の変更頻度 –

+0

これには、refである多数のサービスと、refである他の多くの項目があり、すべて検索に使用されます –

関連する問題