我最近将我的 MongoDB 从 2.2.1 版升级到 2.4.6 版,将 pymongo 升级到 2.6.2。
升级的原因之一是新版本的 MongoDB 能够计算并返回文档(包括正确的坐标)与地理空间查询中心的距离,如此处所述。
到目前为止,我执行以下查询:
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。有没有人有好的建议?