示例MongoDB文档
{
"_id":"5adedaad0bd4134kb0",
"url":"https://iscon.cdnalign.com/t51.288515/s640x640e35/10249200241120_2108192950_n.jpg?ig_cache_key=MTEYUTB1NDgxN",
"description":"#funinthesun",
"locationName":"Calamari",
"statusValue":1,
"reason":"Related to travel",
"category":["park"],
"geo": {
"index":"Point",
"coord":[29.123024,77.1999]
}
}
我根据距离特定点的距离来获取文档。
这是我正在使用的查询,以便文档根据距离而来。
询问var collection = db.collection('myData');
collection.ensureIndex({"geo.index":"Point"});
collection.find({
geo :{
$near : {
$geometry : {
index : "Point" ,
coord : [30.564058, 76.44762696]
},
$maxDistance : 100
}
}
}
这显示了这个错误: - {“name”:“MongoError”,“message”:“地理位置附近的无效点$ geometry参数:{index:\”Point \“,coord:[4.27326978424058,30.4439024447627]}点必须是数组或对象”, “waitedMS”:0,“ok”:0,“errmsg”:“地理位置附近的无效点$ geometry参数:{index:\”Point \“,coord:[4.27326978424058,30.4439024447627]}点必须是数组或对象”, “代码”:2}
答案 0 :(得分:2)
如果您查看$ near文档https://docs.mongodb.com/manual/reference/operator/query/near/,您会发现此处有两个问题:
以下是适用的代码的正确版本
var collection = db.collection('myData');
collection.ensureIndex({"geo":"2dsphere"});
collection.find({
geo :{
$near : {
$geometry : {
index : "Point" ,
coordinates : [30.564058, 76.44762696]
},
$maxDistance : 100
}
}
})
答案 1 :(得分:1)
https://docs.mongodb.com/manual/reference/operator/query/near/
这里可能有问题但是从docs $ geometry需要两个参数索引和坐标。你有协调。也许这就是问题所在。改变
coord : [30.564058, 76.44762696]
是
coordinates : [30.564058, 76.44762696]
也可以在DB中更改名称。
希望这有帮助。