00:00 / 00:00

Fecha publicación: 23 jun 2021

Múltiples colecciones

Esto está muy bien, pero en el JSON sólo referenciamos una sóla colección, ¿qué pasa si por ejemplo queremos lanzar una query que necesite tirar de dos colecciones?

En este vídeo vamos a ver como configurarlo.

Manos a la obra

Para definir más de una colección, lo único que tenemos que hacer es envolverlas en un objeto raíz, cada colección tiene su nombre y un array de documentos.

Siguiendo con nuestro ejemplo, modificamos el conjunto de datos para tener una colección de películas y otra de comentarios, así pues pegamos en el panel de configuración el siguiente contenido.

db = {
  peliculas: [
    {
      _id: "573a1390f29313caabcd4135",
      title: "Blacksmith Scene",
      imdb: {
        rating: 6.2,
        votes: 1189,
        id: 5,
      },
    },
    {
      _id: "573a1390f29313caabcd446f",
      title: "A Corner in Wheat",
      imdb: {
        rating: 6.6,
        votes: 1375,
        id: 832,
      },
    },
  ],
  comentarios: [
    {
      _id: "1",
      pelicula_id: "573a1390f29313caabcd4135",
      comentario: "Primer comentario de Blacksmith Scene",
    },
    {
      _id: "2",
      pelicula_id: "573a1390f29313caabcd4135",
      comentario: "Primer comentario de Blacksmith Scene",
    },
  ],
};
  • Vamos a ver que podemos hacer una consulta sólo de la colección de películas:
db.peliculas.find({});
  • Y que podemos hacer una consulta sólo de comentarios comentarios:
db.comentarios.find({});
  • Y para finalizar vamos a crear una consulta agregada en la que unimos con un $lookup películas y comentarios.
db.peliculas.aggregate([
  {
    $lookup: {
      from: "comentarios",
      localField: "_id",
      foreignField: "pelicula_id",
      as: "comentarios",
    },
  },
]);

Cómo puedes ver en los resultados aparece tanto la información de la película cómo los comentarios asociados a cada película.

¿Con ganas de aprender Backend?

En Lemoncode impartimos un Bootcamp Backend Online, centrado en stack node y stack .net, en él encontrarás todos los recursos necesarios: clases de los mejores profesionales del sector, tutorías en cuanto las necesites y ejercicios para desarrollar lo aprendido en los distintos módulos. Si quieres saber más puedes pinchar aquí para más información sobre este Bootcamp Backend.