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

MongoDB聚合查询$lookup搭配$group统计分类商品数结果异常求助

问题原因

你当前的统计逻辑存在核心问题:$category_products._id是由ObjectId类型值组成的数组,$sum运算符统计非数值类型时会默认将其视为0,因此返回结果为0。
同时你不需要额外通过$group阶段实现统计,$lookup返回的category_products数组长度本身就等于该分类下的关联商品数量,直接统计数组长度即可。

正确查询语句

优先推荐使用$size运算符直接读取数组长度的写法,执行效率更高:

db.categories.aggregate([
  {
    $lookup: {
      from: "products",
      localField: "_id",
      foreignField: "product_category",
      as: "category_products"
    }
  },
  {
    $project: {
      _id: "$name",
      num_of_products: { $size: "$category_products" }
    }
  }
])

如果你确实需要合并统计同名分类的商品总数,保留$group阶段的写法如下:

db.categories.aggregate([
  {
    $lookup: {
      from: "products",
      localField: "_id",
      foreignField: "product_category",
      as: "category_products"
    }
  },
  {
    $group: {
      _id: "$name",
      num_of_products: { $sum: { $size: "$category_products" } }
    }
  }
])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 11:36:04