No tienes acceso a esta clase

¬°Contin√ļa aprendiendo! √önete y comienza a potenciar tu carrera

Referencias circulares o bidireccionales

18/22
Recursos

Aportes 1

Preguntas 1

Ordenar por:

¬ŅQuieres ver m√°s aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

Referencias circulares o bidireccionales

Es parte del N-N. Donde cada coleccion tiene documentos que apuntan a todos los relacionados de otra coleccion (O en la misma).

Casos de uso

  • Usa refencia cuando la relacion es n-n
  • Cuando la informaci√≥n es consultada en conjunto. Por si necesitamos las referencias que tiene algun documento sin importal cual sea. Para resolver m√°s facil relaciones y rapido.

Ejemplo

Parte 2.

Ahora trabajemos en la otra referencia.

Facilitar la busqueda de ID

para el proximo proceso

db.products.aggregate([
  { 
    $lookup: { // buscar las id que necesitamos
      from: 'stores',
      localField: '_id',
      foreignField: 'products_ids',
      as: 'stores'
    }
  },
  {
    $project: { // filtrar para ver mejor las id
      _id: 1, // id producto
      stores: { // en tiendas
        _id: 1 // id tienda
      }
    }
  }
])

Modificar Productos

// prod 1
db.products.updateOne(
    {_id: ObjectId('649923c970dfee1c60f23f54')},
    {
        $set: {
            stores_ids: [
                ObjectId("649923f457514437ac501dd4")
            ]
        }
    }
)

// prod 2
db.products.updateOne(
    {_id: ObjectId('649923c970dfee1c60f23f55')},
    {
        $set: {
            stores_ids: [
                ObjectId("649923f457514437ac501dd4"),
                ObjectId("649923f457514437ac501dd5"),
            ]
        }
    }
)

//prod 3
db.products.updateOne(
    {_id: ObjectId('649923c970dfee1c60f23f56')},
    {
        $set: {
            stores_ids: [
                ObjectId("649923f457514437ac501dd5")
            ]
        }
    }
)

Ver las tiendas en el producto

use("platzi_store")
db.products.find()

db.products.aggregate([
  { 
    $lookup: { // buscar las id que necesitamos
      from: 'stores',
      localField: 'stores_ids',
      foreignField: '_id',
      as: 'stores'
    }
  }
])