개요
이 페이지에서는 일대다 관계를 위해 문서 간에 참조 를 사용하는 데이터 모델에 대해 설명합니다.
패턴
다음 예시 출판사와 도서 관계를 매핑합니다. 이는 퍼블리셔 정보를 반복하지 않기 위해 임베딩보다 참조할 때의 이점을 보여줍니다.
책 문서 내에 출판사 문서 포함하면 다음 예시 와 같이 출판사 데이터가 반복됩니다.
{ 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" }