我有一个商店的集合,在地理位置上有一个地理指数.
我想要做的是给出用户的纬度,纬度和搜索半径(mi),我想返回这些参数内的商店列表.
我在MongoDB文档(http://www.mongodb.org/display/DOCS/Geospatial+Indexing)上看到了以下示例,但看起来距离是弧度.
center = [50, 50] radius = 10 db.places.find({"loc" : {"$within" : {"$center" : [center, radius]}}})
那么,将里程转换为弧度的公式是什么?
解决方案 mongodb-user的优秀人员帮助我找到答案.基本上,我真正想要的是一种限制距离的方法.
每个,更新的文档,$ near查询有一个第三个参数:你也可以使用$ near与最大距离
db.places.find( { loc : { $near : [50,50] , $maxDistance : 5 } } ).limit(20)
$ maxDistance的值以弧度为单位; 所以,我不得不用英里的距离把它除以69.
谢谢!
正如文档所说:
所有距离都使用弧度.这使您可以轻松乘以地球半径(约6371公里或3959英里),以获得您所选单位的距离.相反,在进行查询时,除以地球的半径.
所以你需要将半径除以地球半径.在你的例子中它将是:
radius = 10/3959