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

MongoDB:如何聚合关联文档并查询剩余库存总和不足的商品

查询剩余库存总和小于100的商品方法

你可以通过MongoDB的聚合框架关联Product和Stock两个集合,计算每个商品的剩余库存总和后进行筛选,具体实现如下:

db.Product.aggregate([
  // 关联Stock集合,拉取商品对应的所有库存文档
  {
    $lookup: {
      from: "Stock",
      localField: "stocks",
      foreignField: "_id",
      as: "stockDetails"
    }
  },
  // 计算当前商品的剩余库存总和
  {
    $addFields: {
      totalRemaining: { $sum: "$stockDetails.remaining" }
    }
  },
  // 筛选剩余库存总和小于100的商品
  {
    $match: {
      totalRemaining: { $lt: 100 }
    }
  },
  // 可选:指定返回字段,减少冗余数据
  {
    $project: {
      _id: 1,
      name: 1,
      totalRemaining: 1
    }
  }
])

代码说明:

  • $lookup阶段:将Product集合stocks数组中的ObjectId与Stock集合的_id匹配,把对应库存文档存入stockDetails字段。
  • $addFields阶段:用$sum对stockDetails数组的remaining字段求和,得到商品的总剩余库存totalRemaining。
  • $match阶段:过滤出totalRemaining小于100的商品文档。
  • $project阶段:可选步骤,按需返回字段,避免返回不必要的数据。

若数据量较大,建议给Stock集合的_id、Product集合的stocks字段建立索引,提升查询效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 18:35:36