mongodb - 如何使用 MongoDB 获取每个仓库的总数量?
问题描述
我有一个包含以下文件的集合:
{ item: "journal", instock: [ { warehouse: "A", qty: 5 }, { warehouse: "C", qty: 15 } ] },
{ item: "notebook", instock: [ { warehouse: "C", qty: 5 } ] },
{ item: "paper", instock: [ { warehouse: "A", qty: 60 }, { warehouse: "B", qty: 15 } ] },
{ item: "planner", instock: [ { warehouse: "A", qty: 40 }, { warehouse: "B", qty: 5 } ] },
{ item: "postcard", instock: [ { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ] }
想要输出为
{ "_id" : "A", totalQty : 105 }
{ "_id" : "B", totalQty :35 }
{ "_id" : "C", totalQty : 55 }
试着做 :
db.inventory.aggregate([
{$group : {_id: "$instock.warehouse", totalQty : {$sum: "$instock.qty"}}}
])
但它不起作用。可能有一个项目没有instock
字段。
如果我们希望 ' ' 的每个元素instock
作为新集合(' ')中的单独文档,该怎么办inventoryNew
。
该集合来自https://docs.mongodb.com/manual/tutorial/query-array-of-documents/
解决方案
你是在正确的方式只需要使用$unwind before解构instock
数组,$group
$unwind
解构$group
instock.warehouse
然后总结instock.qty
你已经做过的事情
db.collection.aggregate([
{ $unwind: "$instock" },
{
$group: {
_id: "$instock.warehouse",
totalQty: { $sum: "$instock.qty" }
}
}
])
推荐阅读
- android - Android Studios 应用登录失败,应用崩溃
- ios - 在核心数据中如何保存字典或数组,如字符串数据?
- data-warehouse - 作为事实表子集的维度有什么用?
- reactjs - 如何从承诺中返回数据,然后通过反应组件中的道具传递它
- css - 如何在悬停时暂停css动画
- python - 在 Python 中为 Old Macdonald 使用列表和循环
- javascript - 使用 discord.js 为我的 discord 机器人创建 Reaction Roll 函数的最佳方法是什么?
- go - 将时间戳转换为字符串
- server - 出于什么编程原因,物联网编程设备总是需要云/服务器访问?
- javascript - OwlCarousal Camera Slider 猫头鹰项目图像,你如何改变定位左右中心?