考虑这个 mongo 文档,一个带有内部产品列表及其数量的订单:
{
ordernumber: "1234"
detail: [
{ "number": "987",
"count": 10 },
{ "number": "654",
"count": 5 }
]
}
我们如何使用 mongodb shell 获得所有计数的总和?我的总和总是为零,并且不知道该传递什么来表示 _id。
db.preorders.aggregate([ { $match: {} }, { $group: { _id: "$_id", total: { $sum: "$detail.count" } } }])
您可以先做
$unwind
,然后在 $group
上做 null
。
db.collection.aggregate([
{
"$unwind": "$detail"
},
{
"$group": {
"_id": null,
"total": {
"$sum": "$detail.count"
}
}
}
])
这里是Mongo Playground供您参考。