我有一个以下格式的收藏集
{customerID:1,acctDetails:[{accType:"Saving",balance:100},{accType:"checking",balance:500}]}
{customerID:2,acctDetails:[{accType:"Saving",balance:500}]}
我想按acctType查找总余额。我在下面的查询中尝试过。
db.<collectionName>.aggregate([{$group:{_id:"$acctDetails.accType",totalBalance:{$sum:"$accDetails.balace"}}}])
但这并没有给出正确的结果。
答案 0 :(得分:2)
我认为这可以解决您的问题。您首先需要使用$unwind
来转换文档中的每个数组元素,然后使用$group
来按帐户类型对总余额进行求和。
db.collection.aggregate([
{"$unwind": "$acctDetails"},
{
"$group": {
"_id": "$acctDetails.accType",
"totalBalance": {"$sum": "$acctDetails.balance"}
}
}
])