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

MongoDB Sum聚合查询无结果问题求助

问题分析与解决方案

首先看你的聚合管道存在两个关键问题,导致没有返回结果:

1. 管道阶段顺序错误

你把$match放在了$group之后,但分组操作完成后,输出的文档结构只有_id和total两个字段,根本不存在type和user_hash字段,所以后续的$match自然找不到符合条件的文档,返回空结果。

正确的逻辑应该是先过滤符合条件的文档,再对过滤后的结果进行分组求和,这样既高效又能得到正确结果。

2. $group的_id设置错误

你的预期结果是_id: null,但当前代码里用了_id: "$id",而你的示例文档里并没有id字段,只有_id;而且如果要把所有符合条件的文档合并成一个总和,应该把_id设为null,这样MongoDB会将所有匹配的文档归为一组计算总和。


修正后的聚合代码

db.activities.aggregate([
  // 先过滤出指定用户的Expense类型活动
  {
    $match: {
      type: "Expense",
      user_hash: "asdsc4be9fe7xxx"
    }
  },
  // 对过滤后的所有文档分组,计算总金额
  {
    $group: {
      _id: null,
      total: { $sum: "$amount" }
    }
  }
])

验证逻辑

  • 第一步$match会筛选出所有user_hash为asdsc4be9fe7xxx且type为Expense的文档;
  • 第二步$group将这些筛选后的文档全部归为一组(_id: null),然后用$sum累加所有amount字段的值;
  • 最终会返回你预期的格式:{ "_id" : null, "total" : xxxxx }(xxxxx为符合条件的金额总和)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 14:02:48