mongoose 多个字段分组查询 求和
时间: 2024-10-10 15:15:17 浏览: 28
Mongoose 是一个基于 MongoDB 的 Node.js ODM (Object Data Modeling) 库,它允许你在 JavaScript 中操作 MongoDB 数据库。如果你想对 Mongoose 模型中的多个字段进行分组并求和,你可以使用 `aggregate()` 函数,这个函数可以处理复杂的聚合操作,包括分组、计数、平均值等。
例如,假设你有一个名为 `User` 的 Mongoose 模型,其中包含 `salary` 和 `bonus` 字段,你可以这样编写查询:
```javascript
const groupResult = await User.aggregate([
{ $group: {
_id: null,
totalSalary: { $sum: "$salary" },
totalBonus: { $sum: "$bonus" }
}},
]);
```
在这个例子中,`$group` 针对 `_id` 字段进行了分组,并计算了所有用户的 `salary` 总和(`totalSalary`) 和 `bonus` 总和(`totalBonus`)。`$sum` 是用于求和的操作符。
如果你想要按某个字段分组再求和,可以将该字段作为 `_id`,如按 `departmentId` 分组:
```javascript
const groupResult = await User.aggregate([
{ $group: {
_id: "$departmentId",
avgSalary: { $avg: "$salary" },
sumBonus: { $sum: "$bonus" }
}},
]);
```
这里会对每个部门 (`departmentId`) 进行分组,并分别计算平均工资(`avgSalary`)和奖金总和(`sumBonus`)。
阅读全文