Fundamentos de MongoDB

1

Uso de MongoDB: Consultas y Almacenamiento en NoSQL

2

Bases de Datos NoSQL: MongoDB y Tipos de Escalamiento

3

Documentos y colecciones en bases de datos documentales

4

Creación y gestión de bases de datos NoSQL con MongoDB y Atlas

5

Uso de Mongo Compass para Conectar y Consultar Bases de Datos

6

Consultas de MongoDB en Visual Studio Code con MongoDB for VS Code

7

Instalación de Docker en Windows, macOS y Ubuntu

8

Correr MongoDB en Docker: Configuración y Ejecución Local

9

Conexión a MongoDB usando Mongo SH y Docker

10

Diferencias entre JSON y BSON en MongoDB

CRUD

11

Operaciones CRUD e inserción de documentos en MongoDB

12

Operaciones CRUD en MongoDB: Insertar Documentos en Mongo Atlas

13

Actualización de Documentos en MongoDB con Operadores Básicos

14

Actualización en Masa de Documentos en MongoDB con UpdateMany

15

Actualización y manejo de arrays en MongoDB

16

Gestión de datos de sensores IoT en MongoDB: Insert y Update eficientes

17

Eliminar documentos en MongoDB: métodos y prácticas

Operadores

18

Consultas con Operadores de Comparación en MongoDB

19

Operadores de Comparación en MongoDB: Mayor, Menor e Igualdad

20

Operadores avanzados en MongoDB: consultas y actualizaciones eficientes

21

Búsquedas Avanzadas con Expresiones Regulares en MongoDB

22

Selección de Campos en Consultas MongoDB con Projections

23

Consultas Avanzadas en Arrays con MongoDB

24

Operadores Lógicos en MongoDB: Uso de AND, OR y NOR

25

Consultas avanzadas con el operador expresivo en MongoDB

26

Consultas Avanzadas en Arrays y Subdocumentos en MongoDB

Herramientas comunes al trabajar con MongoDB

27

Análisis de Datos con MongoDB Aggregation Framework

28

Ordenar y Limitar Consultas en MongoDB para Paginación

29

Características y usos avanzados de Mongo Atlas

30

MongoDB: Dominio de CRUD y Consultas Avanzadas

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Análisis de Datos con MongoDB Aggregation Framework

27/30
Recursos

¿Qué es el Aggregation Framework en MongoDB?

El Aggregation Framework de MongoDB es una poderosa herramienta diseñada para realizar análisis de datos profundos. Va más allá de lo que permite el Mongo Query Language, ofreciendo un sistema de procesamiento y análisis de grandes volúmenes de datos. A menudo se compara con un conjunto de pipelines o tuberías, donde la salida de datos de una tubería se convierte en la entrada de la siguiente, permitiendo así procesar información de manera continua y efectiva.

Con MongoDB, te adentras en un enfoque más avanzado que conecta, organiza y genera insights significativos de los datos. Es esencial para el análisis a gran escala y es particularmente útil en data science. En situaciones que requieren manejo de gran cantidad de datos, como grandes bases de datos de Airbnb, el Aggregation Framework se convierte en una herramienta crucial.

¿Cómo se utiliza el Aggregation Framework?

El Aggregation Framework se utiliza a través de un comando llamado aggregate, que permite ejecutar múltiples etapas o procesos denominados pipelines. Cada pipeline realiza una operación específica sobre los datos de entrada. A continuación, se detalla el uso básico:

Ejemplo de conexión a la base de datos

Para comenzar a utilizar el Aggregation Framework, primero se conecta a una base de datos. En este caso, se trabajará con la base de datos de Airbnb, específicamente con la colección listingandreviews, que contiene documentos sobre reviews y listados de lugares.

db.listingandreviews.find()

Ejemplo de búsqueda simple

A modo de ejemplo, supongamos que queremos saber el precio y los amenities de ciertos alojamientos de Airbnb, específicamente aquellos que ofrecen Wi-Fi:

db.listingandreviews.aggregate([
    { $match: { amenities: "Wifi" } },
    { $project: { price: 1, amenities: 1 } }
])

El comando $match se utiliza para filtrar documentos por un criterio específico. Aquí, se está buscando lugares que tengan Wi-Fi. Luego, $project selecciona únicamente los campos price y amenities de los documentos filtrados.

Agrupación y conteo

Una de las capacidades más poderosas del Aggregation Framework es la habilidad para agrupar datos y realizar cálculos a nivel de grupo. Siguiendo con el ejemplo, podríamos querer contar las habitaciones con Wi-Fi disponibles por país:

db.listingandreviews.aggregate([
    { $match: { amenities: "Wifi" } },
    { $project: { address: 1 } },
    { $group: { _id: "$address.country", count: { $sum: 1 } } }
])

Aquí, los documentos son agrupados por el campo address.country y se utiliza $sum para contar cuántos documentos pertenecen a cada grupo.

¿Dónde se aplica el Aggregation Framework?

El Aggregation Framework es ampliamente utilizado en situaciones que requieren procesamiento complejo de datos, tales como:

  • Data Science: Ayuda en la extracción, limpieza y análisis de datos a gran escala.
  • Análisis para grandes volúmenes de datos: Ideal para industrias que manejan grandes bases de datos, como recomendaciones personalizadas.
  • Consultas complejas y uniones: Aunque la consulta básica es potente, el Aggregation Framework permite realizar tareas más complejas que involucran múltiples colecciones.

MongoDB Aggregation Framework ofrece mucho más que simples consultas. Su versatilidad y potencia hacen que sea una herramienta esencial para cualquier desarrollador o analista que trabaje con datos extensos y complejos. Si estás buscando llevar tus capacidades de análisis de datos al siguiente nivel, considera explorar más sobre este tema. Y si te interesa un curso especializado sobre esta herramienta, estaría encantado de ayudar en tu aprendizaje.

Aportes 30

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Seria excelente ver el curso de aggregation framework

Esta sección de las agregaciones es muy interesante, sería excelente tener un curso enfocado en este apartado. En lo personal he podido utilizar esta herramienta con compass (filtrando datos, renombrando campos) y guardar toda la información en vistas(Lo cual se asemeja bastante a las bases de datos relacionales). Todo esto para presentar informes al cliente de manera legible(formato excel/csv).

También doy mi voto 🙋‍ para ese curso. Pero mientras esperamos un curso de Aggregation Framework, aqui les dejo un articulo para profundizar en este tema: Introduction to the MongoDB Aggregation Framework

Aggregation Framework merece un curso completo

Aggregation Framework

El Aggregation Framework en MongoDB es una potente herramienta que permite realizar operaciones de procesamiento y transformación avanzadas en los datos almacenados en una colección. La función aggregate() es la interfaz que activa el uso del Aggregation Framework desde el lenguaje de consultas de mongo.


Método .aggregate()

El método .aggregate() de MongoDB realiza operaciones de agregación utilizando un conjunto de etapas llamadas “pipelines”. Cada etapa en el pipeline representa una transformación o acción específica que se aplica secuencialmente a los documentos de la colección. Las etapas en el pipeline pueden incluir operadores como $match, $project, $group, $sort, entre otros.


Pipeline

El pipeline es una secuencia de etapas encadenadas, y cada etapa recibe los resultados de la etapa anterior. La estructura básica de una agregación es un arreglo de objetos, donde cada objeto representa una etapa del pipeline.

db.coleccion.aggregate([
  { $match: { campo: valor } },
  { $group: { _id: "$campo", total: { $sum: "$otroCampo" } } },
  { $sort: { total: -1 } }
])

Algunos operadores para .aggregate()

  • $match: Filtra los documentos que cumplen con una condición, es un filtro, como el primer parámetro del método .filter().

  • $group: Agrupa documentos según un campo y realiza operaciones de agregación como suma, promedio, etc.

    Ejemplo:

    db.ventas.aggregate([
      { $group: { _id: "$producto", totalVentas: { $sum: "$cantidad" } } }
    ])
    

    En este ejemplo, $group agrupa los documentos por el campo “producto” y calcula la suma total de la cantidad vendida para cada producto.

  • $project: Proyecta los datos que deseamos ver o no ver en la consulta, es una proyección/projection.

  • $sort: Ordena los resultados según un campo específico.

La consulta final funciona sin la projection.

db.listingsAndReviews.aggregate([
  { $match: { amenities: "Wifi"} }, // find
  {
    $group: {
      _id: "$address.country",
      count: { $sum: 1 }
    }
  }
])

Con el aggregate puedes llegar a hacer prácticamente de todo lo que se te pase por la cabeza, en mi trabajo estamos migrando varios mapReduce complejos a aggregate y es un mundo fascinante.

Quiero curso de Aggregation Framework!!

Todos estamos de acuerdo que se ocupa un curso enfocado a aggrefation framework o por lo menos un modulo delicado a este.

Seria excelente ver un curso de aggregation framnweork

Voto para que se haga un curso de aggregation framework

Si un curso de Aggregation Framework Por favor

EXCELENTE se debe hacer un curso solo de Aggregation framework

que desventajas tiene una base de datos documental como Mongo, en comparación con una base de datos relacional digaamos SQLServer o Oracle, por tanto en que casos de uso no se recomendaría tenerla???
No solo un curso aggregation framework, tambien seria interesante las otras funcionalidades que tiene atlas como lo es "search", "app services" o "charts"

Siii por favor un curso de aggregation framework !!!

¡Quiero un curso de Aggregation Framework!
Si desearia ver un curso sobre de aggregation framework
```js use('football') // 1. Total de goles por torneo (entre los goleadores) db.scorers.aggregate([ { $group: { _id: "$torneo", totalGoles: { $sum: "$goles" } }}, { $sort: { totalGoles: -1 } } ]) // 2. Total equipos por liga use('football') db.teams.aggregate([ { $group: { _id: "$league", numEquipos: { $count: {} } }} ]) // 3. Total de goles por torneo (entre los goleadores) con más de 19 goles use('football'); db.scorers.aggregate([ { $match: { goles: { $gt: 19 } } }, { $group: { _id: "$torneo", total_goles: { $sum: "$goles" }, total_jugadores: { $sum: 1 } } } ]); ```  
¿Cómo se vincula "*id" con el operador "$address.country"?* *según observo en "address.country" y "*\_id" se encuentran al mismo nivel.

voto por curso de Aggregation Frameworks

use("sample_airbnb")

// db.listingsAndReviews.find({
//     amenities: "Wifi"
// },  {
//     price: 1,
//     amenities: 1
// }
// )

// aggregate funcion en forma de pipeline [], [], []... cada proceso alimenta al anterior
db.listingsAndReviews.aggregate([ //aggregate funciona por capas
    { $match: {amenities: "Wifi"}   }, //find
    { $project: { address: 1}}, //project
    { $group: {_id: "$address.country", count: {$sum:1 } } }
])

Quiero un Curso de Aggretation Framework

Estaría buenísimo y muy interesante un curso de ciencias de datos pero basado en mongoDB

Estaria bastante bien un curso de aggregation, se nota tiene mucho que ofrecer.

Sí, me interesa ese curso

Sería genial poder tener un curso de Aggregation Framework

SI QUIERO UN CURSO DE AGGREGATION FRAMEWOORK!

Que topico tan interesante la verdad seria fabuloso un curso asi

Necesitamos un curso de Aggregation Framework