2012-03-24 4 views
1

couchdb 맵을 작성하고 쿼리를 줄이는 것은 초보자입니다. 내 요구 사항 중 하나는 데이터를 방출해야하는 몇 가지 키를 기반으로합니다. 나는 아래에 언급 된대로 그것에 대해 성공적으로 썼다.couchdb에서 쿼리를 줄이고 매핑하십시오.

function(doc) { 
emit([doc.type , doc.category, doc.user], doc); 

}

우리는 그 데이터가 방출 될

http://localhost:5984/test/_design/myDesign/_view/myView?key=["Science","A","John"] 

같은 세 개의 키 값을 제공하는 경우. 하지만 우리가 그 뷰에 대해 하나의 키 또는 두 개의 키를 주면 어떻게 데이터를 얻을 수 있을지 의심 스럽습니다. 즉 위의보기에서 사용자가 doc.user와 같은 하나의 키를 언급하면 ​​사용자 데이터는 세 키를 기반으로 방출됩니다. 그리고 한 가지 더 의심 스럽습니다. 하나의 키에 대해 두 개의 값을 줄 수 있습니까? ? 사용자가 동일한보기를 사용하여 사용자 이름이 JOHN 또는 Joe 인 데이터를 가져 오려고한다고 가정하십시오. 달성을위한 지침을 제공하십시오.

감사합니다.

답변

1

당신은 당신의 볼이 방법으로 변경할 수 있습니다 :

emit([doc.user, doc.type, doc.category], doc); 

을 다음 형식에 관계없이, 다음

?startkey=["someName"]&endkey=["someName",{}] 

을 요청 resultlist에 doc.user = "someName"이 모든 문서는 및 카테고리

자세한 정보가 필요하면 전화에 다른 기준을 추가하십시오.

?startkey=["someName","someType"]&endkey=["someName","someType",{}] 

someName 및 someType이있는 모든 문서를받습니다.

하지만이 같은 순서를 사용할 필요가

(키 필드는 왼쪽에서 오른쪽으로 작성해야 함) 다른 순서, 당신이 다른 순서로 두 번째 발광을 할 필요가 (단지 유형을 찾아)을 필요로하는 경우 동일한 기능 (또는 다른 기능)에서.

동시에 2 개의 키를 묻는 것은 주어진 구멍 키에서만 가능합니다. 뷰를 호출해야합니다.

{keys = [[과학 ","A ","존 "], ["과학 ","A ","조 "]]}

+0

답장을 보내 주셔서 감사합니다. {keys = [[ "Science", "A", "John"], [ "Science", "A", "Joe"]]}하지만 작동하지 않습니다. 한 번에 같은보기에 대한 두 값에 액세스하기위한 것 – veerender

+0

'keys'를 따옴표로 시도하십시오. 자세한 내용은 [해당 문서] (http://wiki.apache.org/couchdb/HTTP_Bulk_Document_API#Fetch_Multiple_Documents_With_a_Single_Request)를 참조하십시오. –

관련 문제