2011-07-06 17 views
1

난 사용자의 회사에 대한 자세한 내용은 예를 들어CouchDB를 전망/감소

을 저장되어있는 accountdata가 저장되는 문서, 사용자 문서 및 문서의 2 종류가 있습니다

userdocs :

{ id : ABC 
, name : "user1" 
, active : false 
, type : "user" 
} 

{ id : XYZ 
, name : "user2" 
, active : true 
, type : "user" 
} 

회사 : 일의 문서 ID에

{ id : ... 
    , name : "company1" 
    , owner : "ABC" 
    , type : "company" 
    } 

{ id : ... 
, name : "company2" 
, owner : "XYZ" 
, type : "company" 
} 

소유자 링크 전자 등록 후 문서를 만든 사용자, 이제는 문서 소유자가 활성화되어있는 회사 만보고 싶습니다.

이 작업을 수행하는 가장 좋은 방법은 무엇입니까? reduce 함수를 사용할 수 있습니까? 모든 예제를 이해할 수 있습니다

답변

1

다른 형식의 문서 (한 문서를 다른 문서와 구분하기 위해 각 문서에 형식 특성이 있음)를 저장하고 view collation을 사용하여 비정규 화 된 데이터베이스를 저장하려고하면이 작업을 시도 할 수 있습니다.

0

알다시피 각 문서에는 유형 속성이 있습니다. 어쨌든, 나는 목록 함수를 사용하여이를 해결했다. 아마 그것을하는 가장 좋은 방법은 아니지만 지금까지는 나의 유스 케이스에 잘 작동합니다. 나는 분명히 한 눈에 보일 것이다. 그러나 약간 혼란 스럽다.

+2

당신이 사용하고있는 솔루션에 대한 자세한 정보를 제공 할 수있는보기 정렬 작업을 얼마나 예를 줄 수 말했듯이? 나는 아주 흥미로울 것이다. –

0

내가보기의 내 결과를 변환 및 뷰의 표준 출력처럼 보이는 JSON을 구축하기 위해이 http://wiki.apache.org/couchdb/Formatting_with_Show_and_List를 사용하는 코드는 다음과 같이 보입니다 :

내보기에 내가 활성 사용자를 방출을

while(row = getRow()) { 
    if(row.value.type=="user") 
     active.push(row.value.id) 
    if(row.value.type=="companies") 
     companies.push(row) 
} 
for(var i = 0; i < companies.length; i++){ 
    if(active.indexOf(companies[i].value.owner) != -1) 
    res.push(companies[i]) 
} 
send('{\"total_rows\":'+companies.length+',\"rows\":[') 
for(var i = 0; i < res.length;i++) { 
    send(toJSON(res[i])) 
    if(i+1 < res.length) 
    send(',') 
    } 
send(']}') 

난 그게 아마도이 수행해야하지하는 방법 :) 그러나 아마 누군가가 나에게 그

관련 문제