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

Spring Data MongoDB中$accumulator聚合返回null问题解决

Spring Data MongoDB $accumulator自定义聚合返回avgScore为null问题修复

问题背景

开发需求为基于Spring Data MongoDB实现自定义$accumulator聚合算子,按name字段分组统计game集合内用户的平均游戏分数。
直接在MongoDB Shell中执行原生聚合语句可返回正确的平均分结果,但基于Spring Data MongoDB实现的Rest接口返回结果中,所有avgScore字段值均为null。排查阶段已覆盖以下校验对象:测试数据集插入脚本、原生MongoDB聚合语句、Game实体类、GameService聚合实现代码、服务端运行日志、ResultAccumulator结果类、GameController接口代码。

问题根因

共定位到两处代码错误:

  • $group分组阶段错误调用last()方法,将$accumulator对应的Document字符串作为普通字段值传入,未触发实际的累加聚合逻辑
  • accumulateArgs参数错误传入普通字段名字符串"score",不符合MongoDB聚合语法要求的字段引用格式"$score"

修复步骤

  1. 调用GroupOperation的accumulate()方法,传入构建完成的Accumulator实例,将聚合计算结果绑定为avgScore输出字段
  2. 将accumulateArgs入参修正为MongoDB标准字段引用格式"$score"
  3. 调整ResultAccumulator类中avgScore字段的类型为Float

修复效果

完成上述调整后,接口可正常返回正确的分组平均分计算结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 06:15:37