Página inicial do Docs → Desenvolver aplicações → Manual do MongoDB
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 relacionamento 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" }