2017-11-20 1 views
1

$nearSphere으로 쿼리를 만들었는데 가끔 상당의 결과 (1000+)가 내 앱 성능에 영향을줍니다.

.limit()을 사용해 보았지만 쿼리에서 무시 된 것 같습니다. 또한 batch_size()을 사용해 보았지만 반환 된 결과의 수에 전혀 영향을주지 않는 것으로 보입니다.

반환되는 결과를 제한하는 해킹이나 방법이 있습니까? 내가 사용

query = {"location": { 
    "$nearSphere": {"$geometry": {"type": "Point", "coordinates" 
    [geo['lat'], geo['lng']]}, "$maxDistance": 500}}} 


coll.find(query).limit(4).batch_size(4) 

:

for r in xrange(0,limit): 
     print res.next() 

쿼리 자체가 매우 간단합니다 : 내가 반복자와 실행에 대한 생각이 나는했습니다과 성능에 대한 좋은 보이지 않는 무엇이다 Azure Cosmos-db의 Mongodb API

답변

1

이 문제는 재현 할 수 없습니다. 한계는 잘 작동합니다. 예를 들어, https://aka.ms/mongodb-feature-support의 예제 문서를 사용하고 문서의 쿼리에 .limit (1)을 추가하면 올바른 동작을 볼 수 있습니다.

db.volcanos.find limit (1) {{{{Location}}} {$ nearSpace : {$ geometry : {type : "Point", 좌표 : [-121,46]} $ minDistance : 1000 $ maxDistance : 1000000}}}

+0

매우 이상하게도 거의 동일한 쿼리를 사용하고 있으며 제한이 무시되는 것을 볼 수 있습니다. 내 DB에 위치 속성은 다음과 같습니다'\t \t "위치": { \t \t \t "유형": "포인트", \t \t \t "좌표"[ \t \t \t \t 34.780659466136484, \t \t \t \t 32.08260571073972 \t \t \t] \t \t은}'어쩌면 형식의 문제는? –

+0

또한 내 쿼리가 "location.coordinates"가 아닌 "location"에 있다는 사실과 관련이있을 수 있습니까? "location.coordinates"에 0 개의 결과가 표시됩니다. –

+0

minDistance 및 maxDistance 값을 가지고 놀아보십시오. 정의중인 모양과 겹치지 않을 수도 있습니다. – alekseys