Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
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 muestra la relación entre editoriales y libros. Ilustra la ventaja de usar referencias en lugar de incrustaciones para evitar repetir la información de la editorial.

Al insertar el documento del editor dentro del documento del libro, se repiten los datos del editor, 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 la duplicación de datos de la editorial,utilice referencias y mantenga 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 su crecimiento es limitado, almacene 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 matrices mutables y en crecimiento, 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