我的收藏品如下所示:
{
"_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
}
答案 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"
}
}
}
} ])