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

MongoDB聚合查询:按receiverType统计金额及总佣金

解决方案

你可以通过单次全局分组完成所有统计需求,再通过投影转换为目标格式,不需要拆分多个管道:

db.yourCollection.aggregate([
  // 全局分组,同时计算各类型金额总和与佣金总额
  {
    $group: {
      _id: null,
      storeEarnings: {
        $sum: { $cond: [{ $eq: ["$receiverType", "STORE"] }, "$amountPaid", 0] }
      },
      restaurantEarnings: {
        $sum: { $cond: [{ $eq: ["$receiverType", "RESTAURANT"] }, "$amountPaid", 0] }
      },
      shopperEarnings: {
        $sum: { $cond: [{ $eq: ["$receiverType", "SHOPPER"] }, "$amountPaid", 0] }
      },
      totalRelianceCommission: { $sum: "$relianceCommission" }
    }
  },
  // 移除多余的_id字段
  {
    $project: {
      _id: 0,
      storeEarnings: 1,
      restaurantEarnings: 1,
      shopperEarnings: 1,
      totalRelianceCommission: 1
    }
  }
])

关键逻辑说明

  • 全局分组:将_id设为null,会把集合中所有文档归为一组,这样可以同时计算全局佣金总额和各类型的金额总和。
  • 条件累加:用$cond判断当前文档的receiverType,匹配时累加amountPaid,否则加0,实现按类型统计的效果。
  • 投影整理:最后移除自动生成的_id字段,保留需要的输出字段,完全匹配你要的格式。

对比你之前的分组方式,这种方法只需要一次聚合操作,避免了多次分组或合并结果的麻烦,效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 19:40:26