포함된 문서로 일대다 관계 모델링하기
개요
이 페이지에서는 문서 간의 참조를 사용하여 연결된 데이터 간의 일대다 관계를 설명하는 데이터 모델을 설명합니다.
패턴
출판사와 도서 관계를 매핑하는 다음 예를 살펴보세요. 이 예는 출판사 정보가 반복되는 것을 피하기 위해 포함보다 참조를 사용하는 것이 유리하다는 것을 보여줍니다.
출판사 문서를 책 문서에 포함하면 다음 문서와 같이 출판사 데이터가 반복될 수 있습니다.
{ title: "MongoDB: The Definitive Guide", author: [ "Kristina Chodorow", "Mike Dirolf" ], published_date: ISODate("2010-09-24"), pages: 216, language: "English", publisher: { name: "O'Reilly Media", founded: 1980, location: "CA" } } { title: "50 Tips and Tricks for MongoDB Developer", author: "Kristina Chodorow", published_date: ISODate("2011-05-06"), pages: 68, language: "English", publisher: { name: "O'Reilly Media", founded: 1980, location: "CA" } }
출판사 데이터의 반복을 피하려면 참조를 사용하고 출판사 정보를 도서 컬렉션이 아닌 별도의 컬렉션에 보관합니다.
참조를 사용할 때는 관계의 성장에 따라 참조를 저장할 위치가 결정됩니다.출판사당 도서 수가 적고 증가량이 크지 않은 경우에는 출판사 문서 내에 도서 참조를 저장하는 것이 유용할 수 있습니다.출판사당 도서 수가 무척 많은 경우에 이 데이터 모델은 다음 예시에서와 같이 가변적이고 증가하는 배열을 사용합니다.
{ name: "O'Reilly Media", founded: 1980, location: "CA", books: [123456789, 234567890, ...] } { _id: 123456789, title: "MongoDB: The Definitive Guide", author: [ "Kristina Chodorow", "Mike Dirolf" ], published_date: ISODate("2010-09-24"), pages: 216, language: "English" } { _id: 234567890, title: "50 Tips and Tricks for MongoDB Developer", author: "Kristina Chodorow", published_date: ISODate("2011-05-06"), pages: 68, language: "English" }
가변적이고 증가하는 배열을 사용하지 않으려면 책 문서 안에 출판사 참조를 저장하세요.
{ _id: "oreilly", name: "O'Reilly Media", founded: 1980, location: "CA" } { _id: 123456789, title: "MongoDB: The Definitive Guide", author: [ "Kristina Chodorow", "Mike Dirolf" ], published_date: ISODate("2010-09-24"), pages: 216, language: "English", publisher_id: "oreilly" } { _id: 234567890, title: "50 Tips and Tricks for MongoDB Developer", author: "Kristina Chodorow", published_date: ISODate("2011-05-06"), pages: 68, language: "English", publisher_id: "oreilly" }