如何计算Mongodb

时间:2016-12-02 07:10:16

标签: java mongodb

我的收藏品如下所示:

 {
    "_id" : NumberLong(366),
    "file" : "xyz",
    "clist" : {
                    "account" : "BFS",
                    "subAccount":"a"
              },
},
{
    "_id" : NumberLong(366),
    "file" : "xyz",
    "clist" : {
                    "account" : "BFS",
                    "subAccount":"b"
              },
},
{
    "_id" : NumberLong(366),
    "file" : "xyz",
    "clist" : {
                    "account" : "HC",
                    "subAccount":"c"
              },
 }

因为我必须按帐户分组并计算subAccount的数量;例如:

{ 
  account : "BFS", 
  subAccount : "b", 
  count : 1, 
  subAccount :"a", 
  count : 1
}

如果对于帐户BFS,subAccount b存在两次,那么我应该得到这样的输出:

{
  account : "BFS", 
  subAccount : "b", 
  count : 2, 
  subAccount : "a", 
  count : 1
}

1 个答案:

答案 0 :(得分:0)

这可以帮助你......

db.coll.aggregate([ {
    "$group" : {
        "_id" : {
            "account" : "$clist.account",
            "subAccount" : "$clist.subAccount"
        },
        "count" : {
            "$sum" : 1
        }
    }
}, {
    $project : {
        _id : 0,
        "account" : "$_id.account",
        "subAccount" : "$_id.subAccount",
        "count" : "$count"
    }
}, {
    $group : {
        _id : "$account",
        "subaccounts" : {
            "$push" : {
                "subAccount" : "$subAccount",
                "count" : "$count"
            }
        }
    }
} ])