在文档中,它表示默认情况下,Mongo将其视为lat / long:
默认情况下,索引假定您是 索引纬度/经度并且是 因此配置为[-180..180] 价值范围。
所以,让我说我的文件中有这个:
post['loc'] = [ -40.234, 56.222]
db.mycollection.save(post)
我确保我的索引:
db.mycollection.ensureIndex({"loc":"2d"})
现在,如何在Mongo中执行以下操作?
答案 0 :(得分:6)
将$near
与$maxDistance
结合使用:
db.mycollection.find({loc: {$near: [50, 50], $maxDistance: 5}})
$maxDistance
的单位与loc
字段相同,即度。如果我没记错的话,在赤道大约69英里或111公里的程度(但在其他纬度较小,确切的距离很难计算)。
要获取有关返回位置的更多信息,可以使用geoNear
命令,该命令将告诉您所有返回的集合的距离等。见http://www.mongodb.org/display/DOCS/Geospatial+Indexing#GeospatialIndexing-geoNearCommand
我认为您也可以使用$geoWithin
来解决问题:
db.mycollection.find({loc: {$geoWithin: {$center: [[50, 50], 5/3959]}}})
这应该找到圆圈内的所有位置(50,50),半径为5/3959度(即5英里)。