我正疯狂地用MongoDB从一个特定的地点返回最近的场地。这是我第一次做这方面的工作,所以我对这种做法完全陌生。
一开始我所做的就是创建一个2DIndex的我的场地集合。
现在,我试图从一个特定的点得到500米范围内的场地,代码是:
Venue.find({ location:
{
$near: [ 52.3835443 , 4.8353073 ],
$maxDistance: 0.5 / 6371
}
}, function (err, venues) {
return venues;
});不幸的是,它返回了所有文件。
场地模型有这样的场地:
"location": {
"type": {
"type": "string"
},
"coordinates": [{ "type": "Number" }]
}我所有的场地都是这样的:
{
"name": "name",
"address": "address",
"location": {
"type": "Point",
"coordinates": [50.1981668, 7.9943994999]
}
}我也尝试使用$geoNear,但我总是收到所有的文件,而不仅仅是那些在500米的距离。
编辑:
蒙古语版本为3.2;
索引:
{
"v": 1,
"key": {
"location": "2dsphere"
},
"name": "location_2dsphere",
"ns": "mydb.Venue",
"2dsphereIndexVersion": 2
}上述文件:
{
"name": "A name",
"address": "An address",
"location": {
"type": "Point",
"coordinates": [50.1981668, 7.9943994999]
}
}发布于 2016-03-18 12:14:57
$maxDistance运算符将地理空间$near或$nearSphere查询的结果限制在指定的距离内。最大距离的测量单元由所使用的坐标系确定。对于GeoJSON点对象,请指定以米为单位的距离,而不是弧度。参考文献
当我执行这个查询时,我得到:
计划器返回错误:找不到$geoNear查询的索引
因此,将** $几何图形**添加到查询体中
Venue.find({ location:
{
$near: {
$geometry : {
type : "Point" ,
coordinates : [ 52.3835443 , 4.8353073 ]},
$maxDistance : 500}}}
}, function (err, venues) {
return venues;
});https://stackoverflow.com/questions/36082580
复制相似问题