座標に近い場所のコレクションからいくつかの結果を取得しようとしています。この目的のために、lng および lat 属性を持つ location.position 属性に対して 2 次元インデックスを使用しています。
問題は、私が配置したすべての座標で、同じ 60 の結果 (コレクション全体) が返されることです。
私のコレクションのドキュメントはすべて私の GPS 座標に近いものですが、0.0、0.0 座標またはその他のペアを配置すると、常に同じ値が返されます。
実際、空の find() を使用すると、クエリはまったく同じ結果を返します。
エラーが返されていないため、インデックスは正しく作成されているようです。
私のコレクションのオブジェクトは次のようなものです:
{ "_id" : "80293840923...",
"name": "myname",
"location" : {
"position" : { "lng": -196988, "lat": 43.30594 }
"address": "example",
"city": "example" }
}
インデックスは次のように作成されます。
places_collection.ensureIndex({"location.position": "2d"}, {name: "index2dLocation"}, function(error, indexName){
callback("", "Indice creado: " + indexName)
});
検索は次のようになります。
places_collection.find(
{ "location.position" : { $near : [ parseFloat(-123.98) , parseFloat(162.342) ] } }
).toArray(function(error, results) {
if( error ){ callback(error, "")
}else{ console.log(results.length); callback(null, results); }
});
最後に、前に述べたように、私の検索では常に同じ結果が返されます。座標を入れても構いません。空の find() を作成してもかまいません。
ここで何か助けてください。私はそれを機能させる方法がわかりません。
どうもありがとうございました。