我最近将我的MongoDB从2.2.1版本升级到了2.4.6版本,并升级了pymongo到2.6.2版本。
升级的原因之一是新版本MongoDB具备计算并返回文档(包括适当坐标)距离地理查询中心的距离的能力,详情请参见此处。
目前我执行以下查询:
升级的原因之一是新版本MongoDB具备计算并返回文档(包括适当坐标)距离地理查询中心的距离的能力,详情请参见此处。
目前我执行以下查询:
db.collection.find({"loc": {"$within": {"$center": [[LON, LAT], RADIUS]}}})
LON、LAT和半径都是适当的数字,我通过编程计算每个返回文档与中心的距离。
现在我正在尝试让MongoDB代表我进行距离计算,因为相对于我的代码,它更高效。
我现在正在尝试以下内容:
db.collection.find({"loc": {"$geoWithin": {"$centerSphere": [[LON, LAT], RADIUS]}}})
其中RADIUS现在被正确计算(半径以km / 6371表示),但我得到的结果与旧查询相同。
为了获得每个文档返回的额外字段“dis”,我应该如何更改新的查询?
地理空间索引是2D的,根据文档应该可以工作,但如果需要,我可以将其更改为2dsphere。有人有好的建议吗?