如何在 Node.js 中对 MongoDB 查询使用$group?
原文:https://www . geesforgeks . org/a-MongoDB-query-in-node-js/如何使用组
$group 运算符是一个聚合运算符或聚合阶段,它通过某种指定的表达式对多个数据或文档进行分组,并将它们组合成一个文档。
MongoDB 中的聚合是将多个文档中的值组合在一起的操作,可以对组合后的数据进行多种操作,返回单个结果。而 $group 就是聚合执行的操作之一。
语法:$组运算符
{
$group:
{
_id: <expression>,
<field>: { <accumulator> : <expression> }
}
}
- _id: 是要对文档进行分组的字段。
- 字段:为可选参数,是对分组数据进行一定的累加器运算后的计算字段。
安装猫鼬:
第一步:可以访问安装猫鼬链接安装猫鼬模块。您可以使用此命令安装此软件包。
npm install mongoose
步骤 2: 现在,您可以使用以下命令导入文件中的猫鼬模块:
const mongoose = require('mongoose');
数据库:我们已经在 GFG 的数据库中创建了一个名为员工的集合,如下图所示:
收集 GFG 数据库中的员工
创建节点应用程序:
步骤 1: 使用以下命令创建包。
npm init
第二步:用以下代码创建文件 main.js 。
文件名:main.js
java 描述语言
// 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
输出:在控制台中,我们获得按部门分组的文档,以及每组中的计算字段合计员工和平均工资。
执行 main.js 后的输出
说明:这里我们按照部门字段对员工进行分组,计算单独的字段 totalEmployee 包含每个组中的员工总数, averageSalary 给出每个组中员工的平均工资,使用累加运算符$sum 和$avg。
版权属于:月萌API www.moonapi.com,转载请注明出处