如何代表创建结果计数角色


[
{
"_id": '1',
"role":'admin',
"created":"0",
},
{
"_id": '2',
"role":'vendor',
"created":"1",
},
{
"_id": '3',
"role":'cus',
"created":"1",
},
{
"_id": '4',
"role":'cus',
"created":"1",
},
{
"_id": '5',
"role":'admin1',
"created":"1",
},
{
"_id": '6',
"role":'support',
"created":"5",
},
{
"_id": '7',
"role":'support',
"created":"5",
},
]

想要这种类型的结果提前感谢

[
{
_id: 1,
created: "admin",
counts: [
{
role: "vendor",
count: 1
},
{
role: "cus",
count: 2
}
]
},
{
_id: 5,
created: "admin1",
counts: [
{
role: "support",
count: 2
}
]
}
]

您可以根据使用此查询创建的角色和计数进行分组。

db.<yourCollectionName>.aggregate ( { $group : { _id: "$role" , count: { $sum:1 } } })

上面的查询返回输出,如下所示。。。

{ "_id" : "cus", "count" : 2 }

聚合的另一种变体是

db.counts.aggregate([{ $group: { _id: "$role", count: { $sum:1 }, Data: { $push: "$$ROOT" } }  }]).pretty() 

上面的查询返回输出,如下所示。。。

{
"_id" : "cus",
"count" : 2,
"Data" : [
{
"_id" : ObjectId("5db368e9d130deb5c19f35c8"),
"role" : "cus",
"created" : "1"
},
{
"_id" : ObjectId("5db36913d130deb5c19f35c9"),
"role" : "cus",
"created" : "1"
}
]

}

最新更新