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:

  • Agrupar valores de varios documentos.

  • Calcular un único resultado a partir de los datos agrupados.

  • Analiza los cambios en los datos con el tiempo.

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

Los operadores de agregación en MongoDB te permiten ejecutar análisis en tu clúster sin mover los datos a otra plataforma.

Para realizar operaciones de agregación, puedes utilizar:

  • Pipelines de agregación, el método preferido.

  • Métodos de agregación de propósito único, que tienen menos funcionalidades que un 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 la implementación autogestionada de MongoDB, consultar Cargar el conjunto de datos de muestra. Si se realizó alguna modificación en las bases de datos de muestra, es posible que se deban descartar y volver a crear las bases de datos para ejecutar los ejemplos de esta página.

El siguiente pipeline encuentra a los tres principales directores que han dirigido la mayor cantidad de películas en la base de datos.

Utiliza una etapa $match para filtrar películas que tengan directores listados (excluyendo documentos donde el campo directores sea nulo o esté vacío):

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

La etapa $match reduce la cantidad de documentos en nuestro pipeline al filtrar las películas que no tienen información sobre el director. Siguiente, usa $unwind para descomponer el arreglo de directores para que puedas contar las películas por cada director individual:

{
$unwind : "$directors"
},

Usa $group para agrupar documentos por el nombre del director y contar las películas de cada director:

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

Utiliza $sort para ordenar los documentos restantes en orden descendente por recuento de películas:

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

Utiliza $limit para obtener los tres directores principales:

{
$limit : 3
}

El pipeline completo:

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
}
]
)

La pipeline devuelve estos 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. Estos métodos tienen menos funciones que un 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