No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Relaciones muchos a muchos

17/22
Recursos

Aportes 4

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Relaciones muchos a muchos

La relacion muchos a muchos (N-N) es cuando un documento de una coleccion A puede estar relacionado con varios documentos de una coleccion B y viceversa.
Esta relacion es siempre Referencial.

Se pueden realizar de 2 formas:

  • Con una coleccion intermediaria, que hace de puente entre 1 o más colecciones.
  • Embeber dentro de cada documento un arreglo con los identificadores de sus relaciones.

Casos de uso

  • Usar referencia cuando la relacion es N-N

Ejemplo:

Primera parte.

Un producto puede pertenecer a varias tiendas y una tienda puede tener varios productos. Lo realizaremos mediante un arreglo para referenciar.

Se utiliza una nomenclatura como cualquier otra propiedad pero con un doble corchete y de tipo ObjectId: products_ids[]:<ObjectId>.

Insertar productos

db.products.insertMany([
    {
        name: 'Product 1',
        sizes: ['L', 'M'],
        price: 12   
    },
    {
        name: 'Product 2',
        sizes: ['S', 'M'],
        price: 9   
    },
    {
        name: 'Product 3',
        sizes: ['L', 'M', 'XL'],
        price: 16   
    },
])

Insertar Tiendas

db.stores.insertMany([
    {
        name: 'Store A',
        products_ids: [
            ObjectId("64991cdf44ec03dd012ecccd"),
            ObjectId("64991cdf44ec03dd012eccce")
        ]
    },
    {
        name: 'Store B',
        products_ids: [
            ObjectId("64991cdf44ec03dd012ecccc"),
            ObjectId("64991cdf44ec03dd012eccce")
        ]
    },
])

Usar LookUp

db.stores.aggregate([
    {
        $lookup: {
          from: 'products',
          localField: 'products_ids', // automaticamente detecta que es una lista
          foreignField: '_id',
          as: 'products'
        }
    }
])

Comparto enlace de la documentación oficial de mongo donde se habla de los diferentes tipos de relaciones
https://www.mongodb.com/docs/manual/applications/data-models-relationships/

Hay alguna forma de obtener el *id del ultimo documento insertado como en sql el scope\_identity?*

Aprender de la mano de MongoDB University es bueno pero Nicolas tambien es excelente Profesor para aprender Modelado de Datos en MongoDB