Este capítulo introduce la tubería de agregación de MongoDB, que se utiliza principalmente para análisis estadístico, similar a la instrucción group by
en SQL. En la shell de MongoDB, el análisis estadístico se logra a través de la función db.collection.aggregate()
.
Concepto
La Tubería de Agregación es un concepto abstracto que trata los datos como agua que fluye a través de una tubería. Podemos procesar los datos en múltiples etapas dentro de la tubería. Después de que una etapa procesa los datos, los resultados procesados se pasan a la siguiente etapa para un procesamiento adicional.
Ejemplos de aplicación de la tubería de agregación en análisis estadístico:
- En la primera etapa, se recuperan datos de documentos de una colección en base a ciertas condiciones.
- En la segunda etapa, los datos de documentos recuperados se agrupan y agregan.
- En la tercera etapa, los datos agregados de la segunda etapa se ordenan.
Todo el proceso es como una operación de tubería donde los datos fluyen desde un extremo de la tubería, pasan por varios procesos y luego se genera un resultado final.
Operadores Soportados por la Tubería de MongoDB
A continuación se muestran los operadores comunes soportados por la tubería:
Operador | Descripción |
---|---|
$match | Se utiliza la etapa $match para filtrar datos de documentos en base a condiciones, similar a la condición where en SQL. |
$group | La etapa $group se utiliza para agrupar y agregar datos de documentos, similar a la cláusula group by en SQL. |
$sort | Se utiliza para ordenar los datos. |
Pasos para Usar la Tubería de Agregación
Normalmente, se involucran tres pasos:
- Filtrar los datos objetivo usando $match.
- Agrupar y agregar los datos usando $group.
- Ordenar los resultados usando $sort (opcional).
Ejemplo:
db.orders.aggregate([
{ $match: { status: "A" } },
{ $group: { _id: "$cust_id", total: { $sum: "$amount" } } },
{ $sort: { total: -1 } }
])
Equivalente en SQL:
select sum(amount) as total from orders
where status="A"
group by cust_id
order by total desc
Nota: Para obtener más información sobre el análisis estadístico de agregados, consulte los capítulos posteriores.