arrays - 如何代表创建的结果计数角色?
问题描述
[
{
"_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"
}
]
}
推荐阅读
- c# - 我们如何将字符串从一个方法返回到主方法?
- android - Android:UI 未通过 MutableSet MutableLiveData 上的数据绑定刷新
- pandas - 对熊猫数据框的列应用差异
- python - 不断从python中的csv阅读器获取文件未找到错误
- python-3.x - 条件后返回 None 而不是 print 语句
- python - 如何为变量定义布尔值?
- python - 使用 OpenCV 在 MacOS 上将 jpg 转换为 bmp 很容易。可以用枕头做这项工作吗?
- c# - 我想在一个事件上创建一个计时器/秒表
- c# - 检查数组中的每个元素以查看它是否等于字符串
- javascript - Built-in 对象、Native 对象和 Host 对象有什么区别?