Agregación $group en MongoDB

La operación de agregación $group en MongoDB es una potente herramienta que te permite agrupar documentos en una colección en función de un campo específico y realizar cálculos y operaciones en esos grupos. Esta operación es parte del framework de agregación de MongoDB y se utiliza comúnmente para realizar análisis de datos complejos. A continuación, te proporcionaré una lección detallada sobre cómo utilizar $group en MongoDB.


Conexión a la base de datos

Antes de realizar cualquier operación de agregación, debes conectarte a tu base de datos MongoDB. Utiliza el controlador de MongoDB para Node.js o cualquier otro lenguaje de programación que prefieras.

Por ejemplo, en Node.js, puedes usar el siguiente código para conectarte a tu base de datos:

const { MongoClient } = require('mongodb');
const uri = 'mongodb://localhost:27017/tu_base_de_datos';
const client = new MongoClient(uri);

async function conectar() {
  try {
    await client.connect();
    console.log('Conexión exitosa a la base de datos');
  } catch (error) {
    console.error('Error al conectar a la base de datos:', error);
  }
}

conectar();

Utilizar la operación de agregación $group

Una vez que estés conectado a tu base de datos, puedes usar $group para agrupar documentos y realizar operaciones de agregación. El formato básico de una operación $group es el siguiente:

db.tu_coleccion.aggregate([
  {
    $group: {
      _id: '$campo_de_agrupación',
      nuevo_campo: { $operación: '$campo_a_operar' }
    }
  }
]);
  • $campo_de_agrupación: El campo por el cual deseas agrupar los documentos. Puedes especificar un campo existente o usar un valor constante para crear grupos.
  • $operación: La operación que deseas realizar en los documentos del grupo, como $sum, $avg, $max, $min, etc.
  • nuevo_campo: El nombre del nuevo campo que contendrá el resultado de la operación.

Ejemplo de uso de $group

Supongamos que tienes una colección de ventas y deseas calcular la suma total de ventas por país.

const pipeline = [
  {
    $group: {
      _id: '$pais',
      totalVentas: { $sum: '$monto' }
    }
  }
];

const collection = client.db('tu_base_de_datos').collection('tu_coleccion');

async function realizarAgregacion() {
  try {
    const resultado = await collection.aggregate(pipeline).toArray();
    console.log('Resultados de la agregación:', resultado);
  } catch (error) {
    console.error('Error al realizar la agregación:', error);
  }
}

realizarAgregacion();

Este código agrupará los documentos en la colección por el campo ‘pais’ y calculará la suma total de ventas para cada país. El resultado será una lista de objetos con el ID del país y el campo ‘totalVentas’.

La operación de agregación $group es extremadamente versátil y puede utilizarse para realizar cálculos y resúmenes complejos en los datos de tu base de datos MongoDB. Asegúrate de personalizarla según tus necesidades específicas.