私はそうのようなのコレクションを持っている:MongoDBの地理空間クエリは
db.records.save({ name : "John Smith", addresses : [ { context : "home" , loc : [ 55.5, 42.3 ] } , { context : "work", loc : [ -74 , 44.74 ] } ] })
をそして私はこのようなインデックスを作成しました:私はしようとすると、今
db.records.createIndex({ "addresses.loc": "2d" })
をし、次のようなクエリを作成します。
db.Company.findOne({ "stores.loc" : { $near :[55.5, 42.3]}})
私が得ようとしているのは、というアドレスの配列を持つjohn smiteです。というのは、関連するアドレスです。私が得るのは、すべてのアドレスでジョンのsmiteです。
どうすれば解決できますか?これは、ドキュメント内のアドレスを取得し、そこから最も近いノードを得るためにあなたのスキーマを変更することができるかどうかを固定することができる
Johnのすべてのアドレスを1つの文書にまとめる特別な理由はありますか? – abhinsit
これらの場所はすべて1つの文書内にあるので、文書を '[55.5、42.3]'の近くで見つけ、文書全体を返します。スキーマを「平坦化する」(つまり、住所ごとに1つの文書を使用する)ことを検討してください。 – Adam