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 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.

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

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

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

La etapa $match reduce el número de documentos en nuestro pipeline al filtrar películas sin información sobre el director. A continuación, utiliza $unwind para deconstruir el arreglo de directores, de modo que podamos contar películas por director individual:

{
$unwind : "$directors"
},

Luego, $group los document por nombre del director y cuente la cantidad de películas que ha realizado cada director:

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

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

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

Después de clasificar tus document, utiliza la $limit etapa para obtener los tres directores principales que han dirigido más películas:

{
$limit : 3
}

La pipeline completa 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 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. 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