PyMongo - MaxDistance操作正常但结果不符合预期

时间:2017-05-02 11:39:07

标签: mongodb geolocation pymongo

我有跟随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检索我的输出

由于

1 个答案:

答案 0 :(得分:0)

更改

"maxDistance": (distance * 1000)"

"maxDistance": (distance / 6371)

为我工作。由于我使用距离乘数,我认为我必须考虑它