2017-05-02 8 views
0

다음 pymongo 쿼리를 사용하여 MongoDB (3.0)에서 geoNear 데이터를 검색합니다. 나는 "1"을 통과 할 때 "거리"에 위치에 전달되고 나는 "maxDistance는"미터이어야한다 MongoDB를 문서에서 이해하고, 그래서PyMongo - MaxDistance 연산이 작동하지만 결과가 예상과 다릅니다.

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 

이제 내 질문에 "거리 * 1000"를 사용하고 있습니다 거리에 대한 나의 기대는 1km 이하의 "거리"를 반환하는 것이지만 이것은 일어나지 않으며 모든 기록이 반환됩니다.

몽고문에서 "distance * 1000"을 "distance/1000"으로 변경하면 기록이 줄어들지 만 여전히 내 기대치와 일치하지 않는 것이 있습니다.

내 쿼리에서 무엇이 잘못되었는지 알 수 없습니다.

PS : 나는

"maxDistance": (distance/6371) 

에 나를 위해 일한

"maxDistance": (distance * 1000)" 

변경 떨어진

감사

답변

0

내 출력을 검색하기 위해 6371 distanceMultiplier을 사용하고 있습니다. 거리 배율을 사용하고 있으므로 고려해야한다고 생각합니다.