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.
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.
Pipeline de agregación
Una canalización de agregación consta de uno o más Etapas que procesan los documentos:
Cada etapa realiza una operación en los documentos de entrada. Por ejemplo, una etapa puede filtrar documentos, agruparlos y calcular valores.
Los documentos que salen de una etapa pasan a la siguiente etapa.
Una canalización de agregación puede devolver resultados para grupos de documentos. Por ejemplo, devolver los valores total, promedio, máximo y mínimo.
Puede actualizar documentos con un flujo de trabajo de agregación si utiliza las etapas que se muestran en Actualizaciones con flujo de trabajo de agregación.
Nota
Las tuberías de agregación se ejecutan con el
db.collection.aggregate()El método no modifica los documentos de una colección, a menos que la canalización contenga una etapa $merge $out o.
Ejemplo de pipeline de agregación
El siguiente ejemplo de canalización de agregación contiene dos etapas y devuelve la cantidad total del pedido de pizzas de tamaño mediano agrupadas por nombre de pizza:
db.orders.aggregate( [ // Stage 1: Filter pizza order documents by pizza size { $match: { size: "medium" } }, // Stage 2: Group remaining documents by pizza name and calculate total quantity { $group: { _id: "$name", totalQuantity: { $sum: "$quantity" } } } ] )
La etapa $match:
Filtra los documentos de pedidos de pizza a pizzas con un
sizedemedium.Pasa los documentos restantes a la
$groupetapa.
La etapa $group:
Agrupa los documentos restantes por pizza
name.Utiliza para calcular el pedido
$sumtotalquantityde cadanamepizza. El total se almacena en eltotalQuantitycampo devuelto por la canalización de agregación.
Para ver ejemplos ejecutables que tengan documentos de entrada de muestra, consulta Ejemplos de pipelines de agregaciones completas.
Aprende más sobre pipeline de agregación
Para obtener más información sobre pipelines de agregación, consulta Pipeline de agregación.
Métodos de agregación de propósito único
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. |