2015-02-03 6 views
1

음, mongodb/mongoose를 처음 사용하기 때문에이 개념 중 일부는 여전히 내 머리 속에 지저분합니다. 사람이 다음 사이에 나에게 차이를 설명 할 수 :컬렉션 VS에 대한 ObjectId 참조 컬렉션 배열

var PersonSchema = new Schema({ 
    name : String, 
    groups: [{ type: Schema.ObjectId, ref: 'Group' }] 
}); 

var GroupsSchema = new Schema({ 
    name : String 
}); 

var PersonSchema = new Schema({ 
    name : String, 
    groups : [GroupsSchema ] 
}); 

감사합니다!

답변

0

이들은 데이터를 모델링 할 때 embed 또는 reference 옵션을 지원하는 몽구스 방법입니다. 각 문서의 Persongroups 배열 필드 별도의 관련 컬렉션 Group 문서의 _id 식별 ObjectId 값을 포함하는 경우

첫번째 경우는 참조를 이용한다. 이것은 groups에 외래 키 세트를 효과적으로 저장하고 있습니다.

두 번째 경우에, groups 어레이는 관련 그룹 워드 프로세서를 직접 포함 (즉, 임베드)한다. 이 경우 그룹에 대한 별도의 콜렉션이 없으므로 어레이의 중복 된 그룹 데이터가 일관되게 갱신되도록하는 것은 어플리케이션의 책임입니다.