【发布时间】:2013-09-21 09:58:43
【问题描述】:
我最近将我的 MongoDB 从 2.2.1 版升级到 2.4.6 版,并将 pymongo 升级到 2.6.2。
升级的原因之一是新版本的 MongoDB 能够计算并返回文档与地理空间查询中心的距离(包括正确的坐标)as explained here。
到目前为止,我执行了以下查询:
db.collection.find({"loc": {"$within": {"$center": [[LON, LAT], RADIUS]}}})
其中 LON、LAT 和 Radius 是正确的数字。然后,我以编程方式计算返回的每个文档到中心的距离。
现在我正在尝试让 MongoDB 代表我进行距离计算,因为与我的代码相比效率更高。
我现在正在尝试的是以下内容:
db.collection.find({"loc": {"$geoWithin": {"$centerSphere": [[LON, LAT], RADIUS]}}})
现在正确计算了 RADIUS 的位置(半径以 km / 6371 为单位),但我得到的结果与旧查询相同。
我应该如何更改新查询以便为每个返回的文档返回额外的字段“dis”?
地理空间索引是 2D 的,根据文档应该可以工作,但如有必要,我可以将其更改为 2dsphere。有人有好的建议吗?
【问题讨论】:
标签: mongodb geospatial pymongo