馃搱 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