Docs Menu
Docs Home
/ /
/ / /

Utiliza una vista para unir dos colecciones

Usar $lookup para crear una vista sobre dos colecciones. Las aplicaciones pueden consultar la vista sin construir ni mantener pipelines complejos.

Los ejemplos de esta página utilizan datos del conjunto de datos de muestra_mflix. Para obtener detalles sobre cómo cargar este conjunto de datos en su implementación autogestionada de MongoDB, consulte Cargue el conjunto de datos de muestra. Si realizaste modificaciones en las bases de datos de ejemplo, es posible que necesites descartar y volver a crear las bases de datos para ejecutar los ejemplos de esta página.

db.createView( "movieComments", "movies", [
{ $match: { year: { $gte: 2014 } } },
{
$lookup:
{
from: "comments",
localField: "_id",
foreignField: "movie_id",
as: "movieComments"
}
},
{
$project:
{
_id: 0,
title: 1,
year: 1,
numComments: { $size: "$movieComments" }
}
}
] )

En el ejemplo:

  • La etapa $match filtra la colección de movies a documentos publicados a partir de 2014.

  • La etapa $lookup utiliza el campo _id en la colección movies para unir documentos en la colección comments que tengan un campo movie_id coincidente.

  • Los documentos que coinciden se agregan como un arreglo en el campo movieComments.

  • La etapa $project selecciona un subconjunto de los campos disponibles, incluyendo numComments, que es el recuento de comentarios para cada película.

Consulta la vista de las cinco películas con más comentarios:

db.movieComments.aggregate( [
{
$group:
{
_id: "$title",
totalComments: { $sum: "$numComments" }
}
},
{ $sort: { totalComments: -1 } },
{ $limit: 5 }
] )
[
{ _id: '<title>', totalComments: <num> },
{ _id: '<title>', totalComments: <num> },
{ _id: '<title>', totalComments: <num> },
{ _id: '<title>', totalComments: <num> },
{ _id: '<title>', totalComments: <num> }
]

Volver

Crear y realizar una query

En esta página