Menu Docs

Página inicial do DocsDesenvolver aplicaçõesManual do MongoDB

Modele relacionamentos de um para muitos com referências de documentos

Nesta página

  • Visão geral
  • Padrão

Esta página descreve um modelo de dados que usa referências entre documentos para descrever relacionamento um-a-muitos entre dados conectados.

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"
}
← Modele relacionamentos um-para-muitos com documentos incorporados

Nesta página