如何在mongodb中按组编写查询文档的嵌入式数组

时间:2020-07-29 14:21:53

标签: mongodb

我有一个以下格式的收藏集

{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"}}}])

但这并没有给出正确的结果。

1 个答案:

答案 0 :(得分:2)

我认为这可以解决您的问题。您首先需要使用$unwind来转换文档中的每个数组元素,然后使用$group来按帐户类型对总余额进行求和。

db.collection.aggregate([
  {"$unwind": "$acctDetails"},
  {
    "$group": {
      "_id": "$acctDetails.accType",
      "totalBalance": {"$sum": "$acctDetails.balance"}
    }
  }
])

工作Mongo playground

相关问题