2011-03-11 3 views
3

관련 문서에서로드 값을 가져 와서 CouchDb의 현재 문서 값과 함께 키/값의 일부로 내보낼 수 있습니까?CouchDb의지도 기능에서 관련 문서에 어떻게 액세스 할 수 있습니까?

예 :

{Id: 1, Type: Entity, Name: US, Code: 001} 
{Id: 2, Type: Entity, Name: Alaska, Code: AL, Parent_Id: 1} 
{Id: 3, Type: Entity, Name: California, Code: CAL, Parent_Id: 1} 
{Id: 4, Type: Entity, Name: Juneau, Code: C-JUN, Parent_Id: 2} 

내가 부모 개체 모두 현재의 엔티티로부터 등 코드, 이름을 읽고지도 기능의 키/값을 방출 할 것입니다. 학부모에게 추가 학부모가있는 경우 그 내용도 읽으 려합니다.

답변

6

map-reduce에서 emit() 개체에 _id이있는 개체는 ?include_docs=true으로 쿼리 할 때 얻을 수있는 문서가됩니다.

지도 캘리포니아에서 실행 할 때 ?include_docs=true와 뷰를 쿼리 할 경우, 모든 행이 캘리포니아에 대한 문서에 대한 value.entity뿐만 아니라의 문서와 doc 값을 갖게됩니다 emit(key, {_id: doc.Parent_id, entity: doc})

따라서, 그것은 할 것 우리.

두 제한 :

  1. 당신이 방법으로 쿼리 당 쿼리 1 수준 깊은 수 있습니다.
  2. 는 링크 된 문서의 _id를 알고 있어야의 include_docs 트릭을 사용하기 때 emit()

이 또 다른 옵션은 그들이 모든 ajacent되도록 모든 관련 또는 이와 유사한 문서가 방출 view collation입니다 전망. 일반적으로 하나의 문서 ID와 모든 하위 항목의 Parent_Id 키가 표시되므로보기의 동일한 키 아래에 있습니다.

+0

우리는 계층 적 데이터를 저장하고 있습니다. 전체를 저장할 수 있다는 것을 알고 있습니다. 경로를 생성 한 다음 키에서 내 보냅니다. 그러나 조직도와 같이 종종 변경되는 계층 구조가 있습니다. 모든 관련 문서의 경로를 업데이트하는 것이 문제가 될 수 있습니다.이 경우 대신 그래프 DB를 사용 하시겠습니까? –

+0

예, 깜빡했습니다. 한 가지 가능성으로 그래프 DB를 언급 할 수 있습니다 .CouchDB는 훌륭하지만 기본적으로 그래프 데이터베이스는 아닙니다. 매우 그래픽 데이터가있는 경우 체크 아웃 할 가치가 있습니다. – JasonSmith

관련 문제