在Node.js中如何使用$group进行MongoDB查询

在Node.js中如何使用$group进行MongoDB查询

$group 运算符是一个聚合运算符或聚合阶段,它通过一些指定的表达式对多个数据或文档进行分组,并将它们合并为一个文档。

在MongoDB中的聚合 是一种将多个文档的值组合在一起,并可以对组合的数据进行各种操作以返回一个结果的操作。而 $group 是聚合操作中的一个操作。

语法:$group运算符

{
    $group:
    {
        _id: <expression>,
        <field>: { <accumulator> : <expression> }
    }
}
  • _id: 这是你想要将文档分组的字段。
  • field: 这是一个可选参数,它是在对分组数据执行某些累加器操作之后计算出的字段。

安装Mongoose:

步骤1: 你可以访问链接 安装Mongoose 来安装Mongoose模块。你可以使用以下命令来安装这个包。

npm install mongoose

步骤2: 现在,您可以使用以下代码在您的文件中导入mongoose模块:

const mongoose = require('mongoose');

数据库: 我们在数据库GFG中已经创建了一个名为employees的集合,以下是图像中显示的条目:

在Node.js中如何使用$group进行MongoDB查询

创建一个Node应用程序:

步骤1: 使用以下命令创建 package.json 文件:

npm init

步骤2: 创建文件 main.js 并添加以下代码。

文件名:main.js

// 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) 
    }) 

使用以下命令运行 main.js :

node main.js

在控制台中,我们按部门和计算字段totalEmployee和averageSalary对文档进行分组,并在每个组中获取结果。

在Node.js中如何使用$group进行MongoDB查询

说明: 在这里,我们根据部门领域对员工进行了分组,并计算了各组的总员工数量和平均工资。其中,totalEmployee 表示每个组中员工的总人数,averageSalary 表示每个组中员工的平均工资,使用了累加运算符 $sum$avg

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程