Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/

Operaciones de agregación

Las operaciones de agregación procesan múltiples documentos y devuelven resultados calculados. Puede utilizar operaciones de agregación para:

  • Agrupa valores de varios documentos.

  • Realiza operaciones sobre los datos agrupados para devolver un único resultado.

  • Analiza los cambios en los datos con el tiempo.

  • Consulta la versión más reciente de tus datos.

Al utilizar los operadores de agregación incorporados en MongoDB, se pueden realizar análisis en el clúster sin tener que mover los datos a otra plataforma.

Para realizar operaciones de agregación, puedes utilizar:

  • Pipelines de agregación, que son el método preferido para realizar agregaciones.

  • Métodos de agregación de propósito único, que son sencillos pero carecen de las capacidades de una pipeline de agregación.

Puedes ejecutar pipelines de agregación en la interfaz de usuario para implementaciones alojadas en MongoDB Atlas.

Un pipeline de agregación consta de uno o más etapas que procesan documentos. Estos documentos pueden provenir de una colección, una vista o de una etapa especialmente diseñada.

Cada etapa realiza una operación sobre los documentos de entrada. Por ejemplo, una etapa puede $filter documentos, $group documentos, y calcular valores. Los documentos que una etapa genera se pasan luego a la siguiente etapa en el pipeline.

Una pipeline de agregación puede devolver resultados para grupos de documentos. También puedes actualizar documentos con una pipeline de agregación con las etapas que se muestran en Actualizaciones con pipeline de agregación.

Nota

Las pipelines de agregación que se ejecutan con el método db.collection.aggregate() no modifican los documentos en una colección, a menos que la pipeline contenga una etapa $merge o $out.

Los ejemplos de esta página utilizan datos del conjunto de datos de muestra 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.

Este sistema identifica a los tres directores que han dirigido la mayor cantidad de películas en la base de datos.

Primero, agregue una etapa para filtrar los documentos a películas que tengan directores listados (excluyendo los documentos donde el campo de directores sea nulo o esté $match vacío):

{
$match : {
"directors" : { $exists: true, $ne: null, $not: {$size: 0} }
}
},

La $match etapa reduce la cantidad de documentos en nuestra canalización al filtrar las películas sin información del director. A continuación, usamos $unwind para descomponer el array de directores para poder contar las películas por director individual:

{
$unwind : "$directors"
},

Luego, los documentos por nombre del director y contar el número de películas que ha realizado cada$group director:

{
$group : {
_id : "$directors",
movieCount : {
$sum: 1
}
}
},

Para encontrar a los directores con más películas, utilice la etapa para ordenar los documentos restantes en orden descendente según la cantidad de $sort películas:

{
$sort : {
movieCount : -1
}
},

Después de ordenar tus documentos, usa la etapa para devolver los tres directores que han dirigido más $limit películas:

{
$limit : 3
}

El proceso completo se muestra en este ejemplo:

db.movies.aggregate(
[
{
$match : {
"directors" : { $exists: true, $ne: null, $not: {$size: 0} }
}
},
{
$unwind : "$directors"
},
{
$group : {
_id : "$directors",
movieCount : {
$sum: 1
}
}
},
{
$sort : {
movieCount : -1
}
},
{
$limit : 3
}
]
)

Esta canalización devuelve los siguientes resultados:

[
{ _id: 'Woody Allen', movieCount: 40 },
{ _id: 'Martin Scorsese', movieCount: 32 },
{ _id: 'Takashi Miike', movieCount: 31 }
]

Para ver ejemplos ejecutables que tengan documentos de entrada de muestra, consulta Ejemplos de pipelines de agregaciones completas.

Para obtener más información sobre pipelines de agregación, consulta Pipeline de agregación.

Los métodos de agregación de propósito único agregan documentos de una sola colección. Los métodos son simples, pero carecen de las capacidades de una pipeline de agregación.

Método
Descripción

Devuelve un conteo aproximado de los documentos en una colección o una vista.

Devuelve un conteo del número de documentos en una colección o una vista.

Devuelve un arreglo de documentos que tienen valores distintos para el campo especificado.

Volver

Datos monetarios

Obtén una insignia de habilidad

Domina los “Fundamentos de la transformación de datos” de forma gratuita.

Más información

En esta página