Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Utiliza una vista para unir dos colecciones

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

Los ejemplos de esta página utilizan datos del conjunto de datos sample_mflix. Para obtener más información sobre cómo cargar este conjunto de datos en su implementación autogestionada de MongoDB, consulte Cargar el conjunto de datos de ejemplo. Si realizó alguna modificación en las bases de datos de ejemplo, es posible que deba eliminarlas y volver a crearlas 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> }
]