📈 Pipeline de agregación
El Pipeline de agregación en MongoDB permite procesar datos de una colección paso a paso, transformarlos y generar resultados complejos, como sumar ventas, contar documentos o calcular promedios.
🔹 1️⃣ Concepto de pipeline
Un pipeline es una secuencia de etapas (stages) que procesan los documentos en orden. Cada etapa recibe los documentos de la etapa anterior, los transforma y pasa el resultado a la siguiente.
- Etapas comunes:
$match,$group,$project,$sort,$limit. - Se utiliza con el método
aggregate()de MongoDB.
🔹 2️⃣ Ejemplo práctico: total de ventas por categoría
Supongamos que tenemos una colección ventas con documentos así:
{
"_id": 1,
"producto": "Teclado mecánico",
"categoria": "periféricos",
"precio": 50,
"cantidad": 3
}
{
"_id": 2,
"producto": "Monitor 27\"",
"categoria": "periféricos",
"precio": 200,
"cantidad": 2
}
{
"_id": 3,
"producto": "Silla gaming",
"categoria": "muebles",
"precio": 150,
"cantidad": 1
}
Queremos obtener el total vendido por categoría:
db.ventas.aggregate([
{ $group: {
_id: "$categoria",
totalVentas: { $sum: { $multiply: ["$precio", "$cantidad"] } }
} }
])
Resultado esperado:
{ "_id": "periféricos", "totalVentas": 550 }
{ "_id": "muebles", "totalVentas": 150 }
🔹 3️⃣ Etapas frecuentes en pipelines
$match: filtrar documentos (comofind()).$group: agrupar documentos y calcular sumas, promedios, máximos, mínimos.$project: modificar la forma de los documentos, crear campos calculados.$sort: ordenar resultados.$limit: limitar la cantidad de documentos devueltos.$skip: omitir documentos (para paginación).
🔹 4️⃣ Ejemplo combinado: filtrar, agrupar y ordenar
db.ventas.aggregate([
{ $match: { categoria: "periféricos" } },
{ $group: {
_id: "$producto",
totalVentas: { $sum: { $multiply: ["$precio", "$cantidad"] } }
} },
{ $sort: { totalVentas: -1 } }
])
Esto devuelve los productos de la categoría “periféricos” ordenados de mayor a menor según su total vendido.
🧠 5️⃣ Buenas prácticas
- Utiliza
$matchal inicio para reducir el volumen de datos procesados. - Usa
$projectpara incluir solo los campos necesarios y mejorar rendimiento. - Divide tu pipeline en etapas claras y comprensibles.
- Para cálculos complejos, considera índices adecuados para
$matchy$sort.
🧭 6️⃣ Resumen rápido
- El pipeline de agregación procesa datos paso a paso mediante etapas.
- Se puede filtrar, agrupar, ordenar y transformar documentos.
- Es más potente que simples consultas
find()para generar informes y estadísticas.
0 Comentarios
Si desea contactar comigo, lo puede hacer atravez deste formulario gracias