📈 Pipeline de agregación

Pipeline de agregación en MongoDB

📈 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 (como find()).
  • $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 $match al inicio para reducir el volumen de datos procesados.
  • Usa $project para incluir solo los campos necesarios y mejorar rendimiento.
  • Divide tu pipeline en etapas claras y comprensibles.
  • Para cálculos complejos, considera índices adecuados para $match y $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.

Publicar un comentario

0 Comentarios