在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应用程序:
步骤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对文档进行分组,并在每个组中获取结果。
说明: 在这里,我们根据部门领域对员工进行了分组,并计算了各组的总员工数量和平均工资。其中,totalEmployee
表示每个组中员工的总人数,averageSalary
表示每个组中员工的平均工资,使用了累加运算符 $sum
和 $avg
。