TIM*_*MEX 6 database indexing mongodb
在文档中,它表示默认情况下,Mongo将其视为lat/long:
默认情况下,索引假定您正在索引纬度/经度,因此配置为[-180..180]值范围.
所以,让我说我的文件中有这个:
post['loc'] = [ -40.234, 56.222]
db.mycollection.save(post)
Run Code Online (Sandbox Code Playgroud)
我确保我的索引:
db.mycollection.ensureIndex({"loc":"2d"})
Run Code Online (Sandbox Code Playgroud)
现在,我如何在Mongo中执行以下操作?
使用$near
与一起选择$maxDistance
:
db.mycollection.find({loc: {$near: [50, 50], $maxDistance: 5}})
Run Code Online (Sandbox Code Playgroud)
单位$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]}}})
Run Code Online (Sandbox Code Playgroud)
这应该找到圆内的所有位置(50,50),半径为5/3959度(即5英里).
归档时间: |
|
查看次数: |
2571 次 |
最近记录: |