如何使用Mongoose按state分组并汇总revenue总和?
按State分组求和Revenue的Mongoose查询
你可以通过Mongoose的聚合管道实现按state分组并求和revenue的需求,核心使用$group和$project两个聚合阶段:
const Record = mongoose.model('Record', RecordSchema); // 执行聚合查询 Record.aggregate([ // 第一步:按state分组,求和revenue { $group: { _id: '$state', // 分组依据:state字段的值 revenue: { $sum: '$revenue' } // 对每组的revenue求和 } }, // 第二步:调整输出格式,将_id重命名为state { $project: { _id: 0, // 隐藏默认的_id字段 state: '$_id', // 将分组用的_id(即state值)赋值给state字段 revenue: 1 // 保留求和后的revenue字段 } } ]) .then(result => { console.log(result); // 输出示例:[{state: 'PH', revenue: 550}, {state: 'LH', revenue: 1450}] }) .catch(err => { console.error('查询出错:', err); });
关键阶段说明
- $group:聚合的核心步骤,指定分组字段并执行聚合计算。
$sum操作符会遍历分组内的所有文档,累加revenue字段的值。 - $project:用于重塑输出文档的结构,把分组生成的
_id字段重命名为state,同时隐藏不需要的_id,让最终结果完全匹配你想要的格式。
内容的提问来源于stack exchange,提问作者Awesome Bassey
相关产品推荐
相关产品推荐

