Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

Modela relaciones uno a muchos con referencias de documentos

Esta página describe un modelo de datos que usa Referencias entre documentos para relaciones de uno a muchos.

El siguiente ejemplo mapea las relaciones entre editoriales y libros. Ilustra la ventaja de hacer referencia en lugar de incrustar para evitar repetir la información del editor.

La incrustación del documento editorial dentro del libro repite los datos de la editorial, como se muestra en el siguiente ejemplo:

{
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 datos duplicados de la editorial, usa referencias y mantén la información de la editorial en una colección separada de la colección de libros.

El crecimiento de las relaciones determina dónde almacenar la referencia. Si el número de libros por editorial es pequeño y el crecimiento es limitado, almacena la referencia del libro dentro del documento de la editorial. Si el número de libros por editorial es ilimitado, este modelo de datos crea arreglos mutables y crecientes, como en el siguiente ejemplo:

{
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 arreglos mutables y en crecimiento, se puede almacenar la referencia del editor dentro del documento del libro:

{
_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"
}

Volver

Documentos incrustados uno a muchos

En esta página