El operador $group es un operador de agregación o una etapa de agregación, que agrupa múltiples datos o documentos por alguna expresión específica y los combina en un solo documento.
La agregación en MongoDB es una operación que agrupa valores de varios documentos y puede realizar una variedad de operaciones en los datos agrupados para devolver un único resultado. Y $group es una de las operaciones que realiza la agregación.
Sintaxis: operador $group
{ $group: { _id: <expression>, <field>: { <accumulator> : <expression> } } }
- _id: Es el campo por el cual quieres agrupar los documentos.
- campo: Es un parámetro opcional, y es el campo computado después de realizar ciertas operaciones de acumulador sobre los datos agrupados.
Instalar mangosta:
Paso 1: puede visitar el enlace Instalar mongoose para instalar el módulo mongoose. Puede instalar este paquete usando este comando.
npm install mongoose
Paso 2: ahora puede importar el módulo mongoose en su archivo usando:
const mongoose = require('mongoose');
Base de datos: Ya hemos creado una colección con el nombre de empleados en nuestra base de datos GFG con las siguientes entradas que se muestran en la imagen a continuación:
Creación de una aplicación de Node:
Paso 1: Cree package.json usando el siguiente comando:
npm init
Paso 2: Cree el archivo main.js con el siguiente código.
Nombre de archivo: principal.js
Javascript
// Requiring module const mongoose = require('mongoose'); // Connecting to database mongoose.connect('mongodb://localhost:27017/GFG', { useNewUrlParser: true, useUnifiedTopology: true, useFindAndModify: false }); // Schema of employee collection const employeeSchema = new mongoose.Schema({ name: String, city: String, salary: Number, department: String }) // Model of employees collection const Employee = mongoose.model( 'employee', employeeSchema) // Group employees by department field // and computing total no. of employees // and average salary in each department Employee.aggregate([ { $group: { _id: { department: "$department" }, totalEmployee: { $sum: 1 }, averageSalary: { $avg: "$salary" } } } ]) .then(result => { console.log(result) }) .catch(error => { console.log(error) })
Ejecute main.js usando el comando:
node main.js
Salida: en la consola, obtenemos documentos agrupados por departamento y campos calculados totalEmployee y averageSalary en cada grupo.
Explicación: Aquí hemos agrupado a los empleados por campo de departamento y hemos computado campos separados totalEmployee que contiene el número total de empleados en cada grupo y el salario promedio que da el salario promedio de los empleados en cada grupo, utilizando operadores de acumulación $sum y $avg.
Publicación traducida automáticamente
Artículo escrito por localhost3000 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA