Modele relacionamentos de um para muitos com referências de documentos
Nesta página
Visão geral
Esta página descreve um modelo de dados que usa referências entre documentos para descrever relacionamentos um-a-muitos entre dados conectados.
Padrão
Considere o exemplo a seguir que mapeia as relações entre editoras e livros. O exemplo ilustra a vantagem da referência sobre a incorporação para evitar a repetição das informações da editora.
A incorporação do documento da editora dentro do documento do livro levaria à repetição dos dados da editora, como mostram os seguintes documentos:
{ 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" } }
Para evitar a repetição dos dados da editora, use referências e mantenha as informações da editora em uma coleção separada da coleção de livros.
Ao usar referências, o crescimento dos relacionamentos determina onde armazenar a referência. Se o número de livros por editora for pequeno com crescimento limitado, armazenar a referência do livro dentro do documento do editor pode, por vezes, ser útil. Caso contrário, se o número de livros por editora for ilimitado, este modelo de dados levaria a matrizes mutáveis e em crescimento, como no exemplo a seguir:
{ 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" }
Para evitar matrizes mutáveis e em crescimento, armazene a referência da editora dentro do documento do livro:
{ _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" }