我有一组商店,其位置属性上有地理空间索引。
我想做的是给定用户的纬度、纬度和搜索半径(mi),我想返回这些参数内的商店列表。
我在 MongoDB 文档上看到了以下示例(http://www.mongodb.org/display/DOCS/Geospatial+Indexing http://www.mongodb.org/display/DOCS/Geospatial+Indexing),但看起来距离是以弧度为单位的。
center = [50, 50]
radius = 10
db.places.find({"loc" : {"$within" : {"$center" : [center, radius]}}})
那么,将英里转换为弧度的公式是什么?
Solutionmongodb-user 的优秀人员帮助我找到了答案。
基本上,我真正寻找的是一种限制距离的方法。
根据更新的文档,$near 查询有第三个参数:
您还可以将 $near 与最大距离一起使用
db.places.find( { loc : { $near : [50,50] , $maxDistance : 5 } } ).limit(20)
$maxDistance 的值以弧度为单位;因此,我必须将距离(以英里为单位)除以 69。
谢谢你!
正如文档所说:
所有距离均使用弧度。这使您可以轻松地乘以地球半径(约 6371 公里或 3959 英里),以获得您选择的单位的距离。相反,查询时除以地球半径。
所以你只需要将你的半径除以地球半径即可。
在你的例子中它将是:
radius = 10/3959
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)