MongoDB聚合:如何计算剩余库存的总成本
计算过滤后剩余库存的总成本(MongoDB)
需求明确:过滤掉剩余数量(remaining)为0的库存数据,计算有效库存项的remaining * costPerItem之和,期望结果为16。
测试数据
db={ stocks: [ { remaining: 2, costPerItem: 5 }, { remaining: 3, costPerItem: 2 }, { remaining: 0, costPerItem: 3 } ] }
聚合查询实现
使用MongoDB聚合框架可以高效完成这个计算,具体语句如下:
db.stocks.aggregate([ // 过滤掉剩余数量为0的库存 { $match: { remaining: { $gt: 0 } } }, // 计算单个库存项的总成本 { $project: { itemTotal: { $multiply: ["$remaining", "$costPerItem"] } } }, // 累加所有有效项的成本得到总和 { $group: { _id: null, totalCost: { $sum: "$itemTotal" } } }, // 仅保留总成本字段,移除默认的_id { $project: { _id: 0, totalCost: 1 } } ])
执行结果
运行上述查询后,会返回符合预期的结果:
{ "totalCost" : 16 }
各阶段说明
$match:精准筛选出剩余数量大于0的库存,排除无效数据$project:利用$multiply运算符计算每个库存项的总成本$group:将所有有效库存项归为一组,通过$sum累加得到总成本$project:调整输出结构,只保留我们需要的总成本字段
内容的提问来源于stack exchange,提问作者vanna
相关产品推荐
相关产品推荐

