2017-01-11 11 views
1

나는이 모든 것을 조사 해왔다. 필자는 CouchDB 2.0을 실행 중이며 데이터 집합을 검색 할 때 기존보기 또는 새로운 망고 쿼리를 사용하도록 선택할 수 있다는 것을 알고 있습니다.CouchDB 2.0에서 망고 쿼리에 startkey 페이지 매김이 필요합니까?

그래서 현재 망고 쿼리 구문을 사용하고 있으며 필요한 결과를 얻고 있습니다. 그러나 지금은 페이지 매김을 구현해야합니다. CouchDB를 2.0 매김을 연구 할 때 나는 주제에이 우수한 토론을 발견

http://docs.couchdb.org/en/2.0.0/couchapp/views/pagination.html

이 큰 데이터 세트 페이지를 매기는 할 수있는 가장 좋은 방법은 하지 건너 뛰기를 사용하는 대신 startkey을 사용하고을 수행 할 것을 제안 한 페이지에서 다른 페이지로 연결된 목록 페이지 매김의 종류.

그래서이 나에게 의미가 내 응용 프로그램 작동하지만, 그때 망고/_find API에 전원을 켤 때 나는 startkey를 전달하기 위해 어떤 방법을 볼 수 없습니다 : 혼동을 일으킬 정도로

http://docs.couchdb.org/en/2.0.0/api/database/find.html

을 , 건너 뛰기 매개 변수를 허용하지만 시작 키가 없습니다.

아무도 여기서 무슨 일이 일어 났는지 설명 할 수 있습니까? Mango/_find에서 성능 특성이 많이 다르므로 큰 데이터 세트에서 건너 뛰기를 안전하게 사용할 수 있습니까? 또는 더 큰 데이터 모음을 탐색 할 때 시작 키가있는보기를 사용해야합니까?

이 특정 질문은 최근 문서 AFAIK에서 답변을 얻지 못하는 것 같습니다. 어떤 도움이라도 대단히 감사하겠습니다.

답변

0

당신은 아마도 선택에 제약 포함하여 startkey/endkey 지원의 부족 해결 수 :

"selector": { 
    "_id": { "$gte": "myStartKey", "$lte": "myEndKey"} 
} 

(그냥 내 두 센트를, 그렇지 아마도 누군가가 더 완전한 답이있다)

0

페이지 매김에 대한 CouchDB의 문서화 된 접근 방식은지도 축소 /보기 종류의 쿼리에만 적용되며 망고 쿼리에는 적용 할 수 없습니다. 주로 뷰에 대해서는 하나의 키 필드가 정렬에 사용되므로 'startkey'을 사용하여 이전 문서를 건너 뛰기가 쉽고 startkey_docid을 추가하여 고유하지 않은 키의 경우 쉽게 구할 수 있습니다.

선택기 쿼리의 경우 이전 레코드를 효과적으로 건너 뛰려면 원래 쿼리에 지정된 정렬 키를보고 다른 조건을 추가하여 이미 처리 된 문서를 건너 뜁니다. 예를 들어, 숫자 필드에서 오름차순으로 정렬하고 값 = 10까지 처리 한 경우 원래 선택기에서 { "field": { "$ gte": 10}}을 $ 및 논리로 추가 할 수 있습니다. 여러 정렬 필드가있는 경우이 작업은 복잡해집니다. 건너 뛰기/제한은 선택기 쿼리의 페이지 매김에 대한보다 쉬운 접근 방법 일 수 있습니다.