¿Cómo usar $group para una consulta MongoDB en Node.js?

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:

Recaudación de empleados en la base de datos GFG

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.

Salida después de ejecutar main.js

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *