簡単な質問:
nodejsでマングースを使用して地理空間クエリを作成する適切な方法は何ですか?
複雑な話:
空間インデックスを持つマングースでスキーマを作成しました
var MySchema = newSchema({
// skipped ...
location : {
type : [ Number ],
required : true,
index : '2d'
},
// skipped ...
});
次に、表3のドキュメントに挿入しました。これらのドキュメントは、mongoクライアントとmongooseの両方でdb.mymodels.find({})
、MyModel.find({});
次に、バウンディングボックスを使用して地理空間クエリを作成しようとします。
mongoクライアントは正常に動作します
db.mymodels.find({location: {$within: {$box: box}}})
ボックス内で、期待どおりに1つの結果のみを返します。
一方、マングースは3つの結果すべてを返します
query = MyModel.where({location: {$within : {$box : box}}});
query.run(cb)
この質問では、whereの代わりにfind()を使用する必要があると述べていますが、findをwhereに置き換えようとすると、'need an area > 0'
チェックしたエラーが発生し、バウンディングボックスが左下、右上の順に正しくフォーマットされます。
何をすべきか?マングースを使用してバウンディングボックスで地理空間クエリを作成する適切な方法は何ですか?