我有跟随pymongo查询从MongoDB(3.0)检索geoNear数据。 “distance”以kms为单位传递,我从MongoDB文档中了解到“maxDistance”必须以米为单位,所以我在查询中使用“distance * 1000”
def getNearestVoices(self, longitude, latitude, distance, userid=None, count='500'):
response = []
for doc in self.users.aggregate([{"$geoNear": {"near": [longitude, latitude],
"distanceField":"distance",
"maxDistance": (distance * 1000),
"distanceMultiplier": 6371,
"num": int(count),
"spherical": True}}]):
pass
现在当我向距离传递“1”时,我的期望是返回匹配1公里或更少的“距离”,但这不会发生,并且所有记录都会被返回。
我还注意到一件事,当我在我的mongo查询中将“距离* 1000”更改为“距离/ 1000”时,我得到的记录更少,但仍不符合我的期望。
我无法弄清楚我的查询中有什么问题。
PS:我使用distanceMultiplier 6371以kms检索我的输出
由于
答案 0 :(得分:0)
更改
"maxDistance": (distance * 1000)"
到
"maxDistance": (distance / 6371)
为我工作。由于我使用距离乘数,我认为我必须考虑它