Skip to content

Latest commit

 

History

History
76 lines (49 loc) · 1.93 KB

File metadata and controls

76 lines (49 loc) · 1.93 KB

Introducción a Bases de Datos > Sesión 07 > Ejemplo 2

Ejemplo 2: Asociación de colecciones

1. Objetivos 🎯

  • Asociar colecciones mediante sus campos en común, usando la agregación $lookup.

2. Requisitos 📋

  1. MongoDB Compass instalado.

3. Desarrollo 🚀

En la base de datos, existen varias colecciones que pueden asociarse. Por ejemplo la colección comments tiene la siguiente estructura:

imagen

Sin embargo, para conocer la película sobre la cual se hizo el comentario, es necesario consultar la colección movies. Y buscar el id que leímos de la colección comments.

imagen

Para facilitar esta búsqueda podemos usar una agregación $lookup que permite asociar dos colecciones. Algo similar a la operación JOIN de SQL.

Agregamos la agregación $lookup con el siguiente json:

{
  from: 'movies',
  localField: 'movie_id',
  foreignField: '_id',
  as: 'pelicula'
}

Esto nos indica que la colección actual (comments) se asociará con la conexión movies que el campo que tomaremos para asociarlas será comments.movie_id y movies._id respectivamente y que los resultados serán almacenados en un arreglo llamado pelicula.

imagen

Elegimos únicamente los campos de interés, primero extrayendo el nombre del objeto que envuelve el arreglo y posteriormente proyectando únicamente los campos deseados

  • $addFields
{
  pelicula_objeto: {$arrayElemAt: ["$pelicula",0]}
}
  • $addFields
{
  pelicula_nombre: "$pelicula_objeto.title"
}
  • $project
{
  _id:0,
  pelicula_nombre:1,
  name:1,
  text:1
}

No cierres, este pipeline, pues lo usaremos más adelante.

imagen

Anterior | Siguiente