2014-01-10 3 views
2

나는 몽구스 스키마과 같이 있습니다몽구스 중첩 배열, 나무 및 임베디드 문서는

Schema: Item 
Schema: SubItem 
Schema: SubItemTwo 

//Item Schema looks like this: 
Item: { 
    SubItem: [SubItemSchema] 
} 

SubItemSchema looks like this: 
{ 
    field1: String, 
    field2: String, 
    OtherItems: [SubItemTwoSchema] 
} 

SubItemTwoSchema 일부 문자열 필드의 평평한 스키마입니다.

기본적으로 SubItemSchema.OtherItems에서 쿼리, $ set, $ inc 및 $ addToSet 연산자 등을 사용하여 작업하는 것이 거의 불가능하다는 사실을 알고 있습니다. 기본적으로 몽구스 방식이 효율적이라고 생각하지 않습니다. 서브 어레이를 수정 된 것으로 표시 한 후 전체 "Items"인스턴스 Mongoose push() 및 save() 즉 Item.SubItem [0] .OtherItems.push (thing)

몽구스는 임베디드 문서 배열을 지원하며 배열 내의 배열 - 두 번째 레벨 배열로는 많은 작업을 수행 할 수 없습니다.

제 질문은 이러한 유형의 데이터 모델 즉 하위 배열이있는 배열이있는 객체를 사용하는 사람들이 어떤 접근 방식을 사용하고 있는지 궁금합니다. 나는 트리 구조에 관한 http://docs.mongodb.org/manual/tutorial/model-tree-structures/의 문서에 주목하지만 몽구스의 푸시 방식을 사용하지 않고 2 레벨 중첩 배열을 모델링하는 방법을 아직 보지 못했습니다. 트리 구조를 모델링하는 MongoDb 문서는 부모와 조상을 참조하는 필드를 추가해야하지만 내 트리가 3 레벨 정도이기 때문에 잔인한 것으로 보입니다.

이렇게해야 I : 1. 배열에없는 포함 된 문서를 멀리 몽구스 활용하기 문서 배열 2를 사용하고 사용하는 3. 배열에서 배열을 가지고 있겠지 있도록 내 데이터를 다시 모델링 ?

옵션 3이 대답 일 경우 어떻게 스키마를 리모델링하여 SubItemTwo 문서가 SubItem 문서의 하위 항목이 될 수 있으며 SubItem 문서가 부모 항목의 하위 항목이 될 수 있는지 제안 하시겠습니까?

감사합니다.

답변

2

나는 아이들에게 포함 된 부모의 배열로 스키마를 구현하여 해결했습니다. 나를 위해 일하니. 당신이 어떤 해명 물어 주저하지 말고 필요한 경우 http://docs.mongodb.org/manual/tutorial/model-tree-structures-with-ancestors-array/

:이 방법을 사용하여 구현 것 https://github.com/mariuskubilius/lbg-mongoose-utils/blob/master/lib/ancestorTree.js

: 여기에 모듈로 구현이다.

+0

안녕하세요? 귀하의 조상입니다. 현재 몽구스 버전을 사용하고 계십니까? 사용법이 어딘가에 문서화되어 있습니까? 감사! @Marius –

+0

잠시 후 업데이트하지 않았습니다. 따라서 작동하지 않을 가능성이 크고, 반년 넘게 관련된 mongo를 사용하지 않았을 가능성이 있습니다. 알아내는 가장 쉬운 방법은 – Marius

관련 문제