2009-09-23 7 views
10

근본적인 문제 - 내 문서에 "categories"타임 스탬프이 있다고 가정 해 보겠습니다. 나는 지난 2 시간 이내의 타임 스탬프를 가지고있는 "foo는" 카테고리에있는 모든 문서를 원한다면, 그것은 간단하다 : 문제가 I 때 온다CouchDB보기의 매개 변수로 여러 키 범위

function (doc) { 
    emit([doc.category, doc.timestamp], null); 
} 

다음 쿼리

GET server:5894/.../myview?startKey=[foo, |now - 2 hours|]&endkey=[foo, |now|] 

로 지난 두 시간 내에 foo 또는 의 항목을 원합니다. 시간에 신경 쓰지 않는다면 키 컬렉션을 통해 직접 키를 가져올 수 있습니다. 불행히도 범위가있는 옵션이 없습니다.

나는 두 시간 블록 타임 스탬프를 반올림되어 그 동안 일을 결국, 다음 쿼리를 다중화 무엇 :

POST server:5894/.../myview 
keys=[[foo, 0 hours], [foo, 2 hours], [bar, 0 hours], [bar, 2 hours]] 

그것은 작동하지만, 내가 다시 가고 싶은 경우에 지저분한 얻을 것이다 많은 시간 (블록 크기와 관련하여).

여러 startKey/endKey 쌍을보기에 전송할 수 있습니까? 키에 게시 할 수있는 키 : [] 배열과 비슷합니까?

답변

4

아마도 두 가지 쿼리를 수행하는 것이 좋습니다. CouchDB는 여러 개의 동시 쿼리를 처리 할 수 ​​있으므로 여러 프로세스/스레드를 스핀 오프하고 foo 및 bar 문서를 별도로 쿼리 할 수 ​​있습니다.

현재 CouchDB는 다중 범위 쿼리를 지원하지 않습니다. ORing 및 ANDing 키는 하나의 쿼리에서 처리 할 수 ​​없습니다.

+0

키를 통해 OR 키를 사용할 수도 있지만 그래요. 감사. – kolosy

9

당신이 그렇게 할 수 있도록 CouchDB 문제가 있습니다. 나는 당신을 위해 효과가 있을지도 모르는 그 티켓에 0.10.1에 대한 보증 패치를 간단하게 첨부했다. 그것은 나를 위해 작동과 나 같은 일을 할 수 있습니다 : 나 날짜 범위에 대해 여러 추적 ID를 통해 모든 데이터를 얻을 할 수있는 POST 본문에

{ 
    "keys": [ 
     { 
      "startkey": ["0240286524","2010","03","01"], 
      "endkey": ["0240286524","2010","03","07",{}] 
     }, 
     { 
      "startkey": ["0442257276","2010","03","01"], 
      "endkey": ["0442257276","2010","03","07",{}] 
     } 
    ] 
} 

. group=true&group_level=1을 호출하여 추적 ID별로 결과를 그룹화합니다. 더 깊은 그룹 레벨을 사용하면 ID | 연도, ID | 연도 | 월 등을 추적하여 그룹화 할 수 있습니다.

동시에 2000 개를 만들려고 노력할 때 다중 연결은 나를위한 확장 불가능한 오버 헤드였습니다. 새보기는 옵션이 아닙니다. 이미 데이터와보기에 대해 400GB를 사용하고 있습니다!)

문제 및 패치는 https://issues.apache.org/jira/browse/COUCHDB-523입니다.

3

이것은 최신 버전의 CouchDB에 추가되었습니다. 나는 그것이 오래된 질문 알고 있지만 내가 살 때 처음에 그것을 발견

{ 
    "queries": [ 
    { "startkey": 10, "endkey": 11 }, 
    { "startkey": 16, "endkey": 18 } 
    ] 
} 

: 시작/종료 키의 여러 범위를 추가하려면, 다음과 같이 보이는 몸,보기에 POST 요청을 사용할 수 있습니다 이걸 정확히 찾고있어!

+0

이 문서에 대한 참조는 무엇입니까? – Isaac

+0

아직 문서가 없기 때문에 문서를 패치 할 것을 약속했습니다! 나는 다른 예가 유용한 https : // lornajane라면 그것을 블로그에 올렸다.net/posts/2017/multiple-search-keys-in-couchdb –

+0

아, API 문서가 이미 존재한다는 것을 알았습니다. http://docs.couchdb.org/ko/2.0.0/api /ddoc/views.html#sending-multiple-queries-to-a-view –

관련 문제