You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Mongoose Aggregate按条件统计金额总和并排序

Mongoose Aggregate 实现方案

需求拆解

核心逻辑:筛选status为true的订单,按serverUID和objid分组后统计每组的amount总和,同时让结果按serverUID、objid排序。

聚合管道代码实现

ORDER.aggregate([
  // 1. 筛选status为true的文档
  {
    $match: {
      status: true
    }
  },
  // 2. 按serverUID和objid分组,统计每组amount总和
  {
    $group: {
      _id: {
        serverUID: "$serverUID",
        objid: "$objid"
      },
      totalAmount: { $sum: "$amount" },
      // 可选:如需保留组内关联的玩家名,可添加此字段
      relatedPlayers: { $addToSet: "$playername" }
    }
  },
  // 3. 按serverUID升序、objid升序排序(降序用-1)
  {
    $sort: {
      "_id.serverUID": 1,
      "_id.objid": 1
    }
  },
  // 可选:重命名字段让结果更直观
  {
    $project: {
      _id: 0,
      serverUID: "$_id.serverUID",
      objid: "$_id.objid",
      totalAmount: 1,
      relatedPlayers: 1 // 上面添加了此字段才保留
    }
  }
])
.then(result => {
  console.log(result);
})
.catch(err => {
  console.error(err);
});

代码说明

  • $match阶段:精准过滤目标文档,减少后续处理的数据量。
  • $group阶段:以serverUID+objid作为联合分组键,用$sum计算每组金额总和;如果需要留存组内其他信息,可通过$addToSet收集不重复的字段值。
  • $sort阶段:对分组结果按指定字段排序,控制输出顺序。
  • $project阶段(可选):重构输出字段结构,去掉默认的_id,让返回结果更易读。

内容的提问来源于stack exchange,提问作者Jeremy Wu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 11:10:12