MongoDB es una base de datos no relacional que ofrece una flexibilidad notable al manejar documentos. Permite incluir arrays y objetos dentro de objetos, lo que resulta en una forma eficiente de gestionar grandes volúmenes de datos. Esta capacidad de manejar complejidad estructural se adapta perfectamente a las preguntas estratégicas que los negocios buscan responder para guiar sus decisiones. Cuando el objetivo es discernir comportamientos de ventas o identificar patrones de compra, el MongoDB Aggregation Framework y su estructura de pipeline de etapas se posicionan como imprescindibles.
¿Cómo funciona el MongoDB Aggregation Framework?
El Aggregation Framework de MongoDB opera de manera similar a una cadena de montaje, donde los datos fluyen a través de diferentes etapas específicas. Cada etapa transforma la información y la prepara para el siguiente proceso. Esta metodología permite extraer, agregar y ordenar datos de una forma muy precisa y eficiente.
¿Cómo escribir un pipeline de agregación?
Para construir un pipeline en MongoDB, se utilizan una serie de operadores. Estos operadores te serán familiares si conoces el Standard Query Language de MongoDB:
Match: Filtra los documentos en un conjunto de datos basado en un criterio específico. Ejemplo:
{$match:{storeLocation:"Londres"}}
Group: Agrupa los documentos basados en un campo específico y realiza cálculos como promedio, suma, etc. Ejemplo:
{$group:{_id:"$método",mediaEdad:{$avg:"$age"}}}
Project: Define qué campos y de qué forma se presentarán en el resultado final. Ejemplo:
Sort: Ordena los resultados basándose en un campo específico. Ejemplo:
{$sort:{mediaEdad:1}}
Con estas etapas, puedes construir un pipeline que filtre, transforme y presente los datos exactamente como lo necesitas.
¿Cómo aplicar un caso de uso con pipelines en MongoDB?
Considera una base de datos de ventas donde el objetivo es optimizar una campaña de marketing. La gerencia desea conocer:
El rango y la media de edad de los compradores.
Los canales utilizados para las compras (online, presencial, teléfono).
Los datos filtrados para una ubicación específica, como Londres.
El pipeline se estructuraría iniciando con Match para filtrar por ubicación, seguido de Group para segmentar por canal de compra, Project para definir la visualización final y Sort para ordenar por media de edad.
Con este código, se logra generar un resultado que proporciona a la gerencia un panorama claro de los usuarios por segmento de compra y la media de edad, todo optimizado para potenciar la estrategia de marketing.
¿Qué necesitas para profundizar en MongoDB?
Para avanzar en el uso de MongoDB y dominar el Aggregation Framework, se recomienda tener una base sólida en bases de datos, especialmente en aquellas no relacionales. Si eres nuevo en este mundo, el curso de Introducción a MongoDB de Platzi es un excelente punto de partida. Si ya tienes experiencia, considera explorar recursos enfocados en colecciones y el formato JSON para afinar aún más tus habilidades.
Carlos Olivera Terrazas, un arquitecto de soluciones de software con dos décadas de experiencia, te acompañará en este recorrido de aprendizaje, asegurándote de que adquieras el conocimiento necesario para aplicar el Aggregation Framework de MongoDB en tus proyectos.
Obtén respuestas inmediatasProfundiza lo que acabas de verObtén respuestas inmediatas
SIUUUUU, puedes hacer tus aggregations en mongoDB compass y despues exportar a cualquier lenguaje de programacion que quieras ^^
Genial, se esmeraron con este curso y muy didactico el profesor
Hola les dejo mi repositorio donde tengo todas las notas del curso, para poder estudiar juntos, la subcarpeta de este curso es A04 saludos.
FelixUcTech/DB-NoSQL
Comparto mis apuntes personales sobre MongoDB y específicamente sobre este tema:
Interesante tema.
db.sales.aggregate([//Restricciones o Filtros{$match:{"storeLocation":"London"}},//Agrupar {$group:{_id:"$purchaseMethod",avgAge:{$avg:"$customer.age"}}},//Modelar resultado (Que campos y como se van a mostrar){$project:{_id:0,metodo:"$_id",mediaEdad:{$round:["$avgAge"]}}},//Ordenar{$sort:{"mediaEdad":1}}])
db.sales.aggregate([
//Restricciones o Filtros
{
$match: {"storeLocation":"London"}
},
//Agrupar
{
$group: {
_id: "$purchaseMethod",
avgAge: {$avg: "$customer.age"}
}
},
//Modelar resultado (Que campos y como se van a mostrar)
{
$project: {
_id:0,
metodo:"$_id",
mediaEdad:{$round:["$avgAge"]}
}
},
//Ordenar
{
$sort: {
"mediaEdad": 1
}
}
])
db.sales.aggregate([ //Restricciones o Filtros { $match: {"storeLocation":"London"} }, //Agrupar { $group: { _id: "$purchaseMethod", avgAge: {$avg: "$customer.age"} } }, //Modelar resultado (Que campos y como se van a mostrar) { $project: { _id:0, metodo:"$_id", mediaEdad:{$round:["$avgAge"]} } }, //Ordenar { $sort: { "mediaEdad": 1 } }])
use('sample_supplies')db.sales.aggregate([{$match:{"storeLocation":"London"}},{$group:{_id:"$purchaseMethod",avgAge:{$avg:"$customer.age"}}},{$project:{_id:0,metodo:"$_id",edadPromedio:{$round:["$avgAge"]}}},{$sort:{"edadPromedio":1}}])/*
$match: es un operador que filtra los documentos de entrada para permitir que
solo pasen los documentos que coinciden con la condición especificada.
(En nuestro caso, filtramos por la ubicación de la tienda en Londres.)
$group: es un operador que agrupa los documentos de entrada por un campo específico,
en nuestro caso, el método de compra. También calcula la edad promedio de los clientes
$project: es un operador que cambia la forma de los documentos de entrada.
En nuestro caso, cambiamos el nombre de los campos y redondeamos la edad promedio.
$sort: es un operador que ordena los documentos de entrada según el campo especificado.
En nuestro caso, ordenamos por edad promedio.
*/