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

使用Mongo聚合计算cooper_inc在4AM Mart的潜在成本实现求助

4AM Mart的Cooper_inc潜在成本计算Mongo聚合查询实现

需求说明

  • 目标:计算4AM Mart门店中cooper_inc制造商的潜在成本
  • 潜在成本计算公式:potential cost = (cooper_inc销往4AM Mart的商品年成本) + (4AM Mart内其他制造商销售同类商品的年成本)
  • 本次计算涉及品类:cooper_inc供应的面包、奶酪两类商品,无关品类(如功能饮料)、其他门店数据不纳入统计
  • 预期结果:pot_cost = (45+60) + ((56+54) + (34+80)) = $329

现有查询问题

你当前的查询第一步match就仅过滤保留了cooper_inc的商品,因此无法统计其他供应商的同类商品成本,需要调整聚合逻辑。

修改后的完整聚合查询

db.collection.aggregate([
  // 第一步:过滤4AM Mart的面包、奶酪类商品,排除无效数据提升查询效率
  {
    "$match": {
      "shop": "4AM_Mart",
      "sub_category": { "$in": ["bread", "cheese"] }
    }
  },
  // 第二步:按子品类分组,用条件聚合分别统计cooper和其他供应商的成本
  {
    "$group": {
      "_id": "$sub_category",
      "cooper_cost": {
        "$sum": {
          "$cond": [ { "$eq": ["$manufacturer", "cooper_inc"] }, "$cost", 0 ]
        }
      },
      "other_cost": {
        "$sum": {
          "$cond": [ { "$ne": ["$manufacturer", "cooper_inc"] }, "$cost", 0 ]
        }
      }
    }
  },
  // 第三步:全局汇总所有品类的成本,得到最终潜在成本
  {
    "$group": {
      "_id": null,
      "total_cooper_cost": { "$sum": "$cooper_cost" },
      "total_other_cost": { "$sum": "$other_cost" },
      "potential_cost": { "$sum": { "$add": ["$cooper_cost", "$other_cost"] } }
    }
  },
  // 第四步:格式化输出字段
  {
    "$project": {
      "_id": 0,
      "Cooper_inc商品年成本": "$total_cooper_cost",
      "其他供应商同类商品年成本": "$total_other_cost",
      "潜在总成本": "$potential_cost"
    }
  }
])

返回结果

执行上述查询后得到的结果完全匹配预期值:

{
  "Cooper_inc商品年成本": 105,
  "其他供应商同类商品年成本": 224,
  "潜在总成本": 329
}

逻辑说明

  • 若后续需要适配其他门店、其他制造商的同类计算,仅需要修改match里的shop、sub_category参数,以及$cond里的manufacturer匹配值即可
  • 条件聚合$cond可以在同一分组内同时统计不同规则的求和结果,避免多次查询关联,性能更优

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 21:45:01