2012-06-22 2 views
2

위도와 경도가 지정된 문서 모음이 있다고 가정 해 보겠습니다.GeoNear() MongoDB 메서드에서 일부 문서를 건너 뛸 수있는 방법이 있습니까?

type is specified: 

{ 
    id: ObjectId, 
    location : {double, double}, /*array, that contains 
            just longitude and latitude*/ 
    someUsefulData : string 
} 

50 마일 지역에있는 모든 문서를 가져와야합니다. 이 목적을 위해 나는 그런 방법을 사용하고있다 :

// set GetNear() options 
var options = new GeoNearOptionsBuilder() 
    .SetMaxDistance(50) // meens 50 miles 
    .SetSpherical(true); 

// create conditions query 
var conditions = Query.NE("someUsefulData ", $ne : {null}); 

// execute GetNear() 
var geoNearResult = collection 
    .GeoNear(conditions, longitude, latitude, limit, options); 

이 부분은 잘 동작한다.

하지만.

필자는 고전적인 페이징 구현을 위해 처음부터 약간의 결과를 건너 뛰고 싶습니다. GeoNear()가 MongoCursor가 아닌 GeoNearResult를 반환한다는 사실을 고려할 때, 누군가가 이것을 수행하는 방법을 알고있을 수 있습니다. 예를 들어 SetSkip (20)을 사용할 수 없습니다.

답변

1

제한을 + 20으로 설정하고 응용 프로그램의 처음 20 개 문서를 건너 뛰는 것이 좋습니다. 또한 https://jira.mongodb.org/browse/SERVER-3925에 투표하면 geoNear 명령에 기본 건너 뛰기 옵션이 추가됩니다.

+0

아시다시피 geoNear는 커서를 반환하지 않지만 데이터를 반환합니다. 따라서이 명령을 실행하면 제한에서 지정한 데이터의 전체 양이 db에서로드됩니다. 내가 틀렸어? –

+0

그건 그렇고, 링크 주셔서 감사합니다, 내가 필요한 것입니다. 이제는 geoear를 건너 뛸 수있는 방법이 없다는 것을 알고 있습니다. –

관련 문제