如何在 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的集合,如下图所示:
创建节点应用程序:
第 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
输出:在控制台中,我们正在获取按部门分组的文档以及每个组中的计算字段totalEmployee和averageSalary 。
说明:这里我们按部门字段对员工进行分组,并计算单独的字段totalEmployee ,其中包含每个组中的员工总数,以及使用累积运算符$sum 和 $avg 给出每个组中员工的平均工资的averageSalary 。