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

📅  最后修改于: 2022-05-13 01:56:41.178000             🧑  作者: Mango

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

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

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

语法:$group运算符

{
    $group:
    {
        _id: ,
        : {  :  }
    }
}
  • _id:这是您要对文档进行分组的字段。
  • field:可选参数,对分组数据进行一定的累加运算后的计算域。

安装Mongoose:

第 1 步:您可以访问链接 Install mongoose来安装mongoose模块。您可以使用此命令安装此软件包。

npm install mongoose

第 2 步:现在您可以使用以下命令在文件中导入mongoose模块:

const mongoose = require('mongoose');

数据库:我们已经在我们的数据库 GFG 中创建了一个名为employees的集合,如下图所示:

在数据库 GFG 中收集员工

创建节点应用程序:

第 1 步:使用以下命令创建package.json

npm init

第 2 步:使用以下代码创建文件main.js。

文件名:main.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)
    })


使用以下命令运行main.js

node main.js

输出:在控制台中,我们正在获取按部门分组的文档以及每个组中的计算字段totalEmployeeaverageSalary

执行 main.js 后的输出

说明:这里我们按部门字段对员工进行分组,并计算单独的字段totalEmployee ,其中包含每个组中的员工总数,以及使用累积运算符$sum 和 $avg 给出每个组中员工的平均工资的averageSalary