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

MongoDB聚合查询统计产品平均数量结果为null如何解决

MongoDB聚合查询返回空值问题修正

原查询错误点

  • 字段引用错误:$project阶段引用了不存在的$item字段(集合中商品数组字段名为items),导致投影出的product、quantity字段全为null
  • 匹配条件写法错误:$match阶段对year字段重复赋值,JS对象中同键名后写的值会覆盖前者,实际生效的筛选条件仅为year <= 2020,没有实现2018-2020的范围筛选
  • 缺少数组拆分步骤:items是嵌套数组结构,单个订单可能包含多个商品,未使用$unwind拆分数组的情况下,无法按单个商品维度做分组统计
  • 分组取值逻辑错误:分组阶段引用数组字段$items.quantity计算平均值,且分组键取了不存在的$product字段,最终返回null结果

修正后的聚合查询

调整管道执行顺序,优先做数据筛选减少计算量,拆分商品数组后再做分组统计:

db.UAS0456.aggregate([
  // 筛选2018-2020年的订单
  {
    $match: {
      $expr: {
        $and: [
          { $gte: [ { $year: "$day" }, 2018 ] },
          { $lte: [ { $year: "$day" }, 2020 ] }
        ]
      }
    }
  },
  // 拆分商品数组,每个商品项生成独立文档
  {
    $unwind: "$items"
  },
  // 按商品ID分组,计算平均购买数量
  {
    $group: {
      _id: "$items.product",
      averageOfQuantity: { $avg: "$items.quantity" }
    }
  }
])

样例数据对应返回结果

{ "_id" : "p1", "averageOfQuantity" : 15 }
{ "_id" : "p2", "averageOfQuantity" : 4 }
{ "_id" : "p3", "averageOfQuantity" : 2.5 }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 20:21:27