database - MongoDB 对文档数组中的对象进行分组和计数
问题描述
我需要对对象中的数组进行分组和计数。我尝试了很多东西,但无法解决。
我有一个这样的 mongodb 文档:
[
{
"id" : 1,
"name" : "A",
"connected" : [
{
"iid" : 1,
"risk" : "high"
},
{
"iid" : 2,
"risk" : "high"
},
{
"iid" : 3,
"risk" : "low"
}
]
},
{
"id" : 2,
"name" : "B",
"connected" : [
{
"iid" : 4,
"risk" : "medium"
},
{
"iid" : 5,
"risk" : "medium"
},
{
"iid" : 6,
"risk" : "low"
}
]
},
{
"id":3,
"name":"C"
}
]
我想要一个查询,它给我这样的结果:
[
{
"id":1,
"name":"A",
"count": {
"high" : 2,
"low" : 1
}
},
{
"id":2,
"name":"B",
"count": {
"medium" : 2,
"low" : 1
}
},
{
"id":3,
"name":"C"
}
]
我在“$addFields”聚合查询中尝试了“$group”,但除了“$group”之外没有。
解决方案
您可以在聚合管道中执行以下操作:
$unwind
connected
大批$group
通过id
并connected.risk
得到计数$group
通过id
将结果放入 {k: , v: } 的数组中- 用来
$arrayToObject
取回你想要的表格
这是Mongo游乐场供您参考。
推荐阅读
- android - 图像未显示在 webview 上
- fusedlocationproviderapi - Google Fused Location Api,onLocationChanged 在一个间隔内触发两次
- security - 如何检测恶意软件应用程序
- objective-c - 检测今日小部件“显示更多”何时被点击或展开?
- java - Dagger2 Component inject for multiple Activities
- python - python函数有时工作,有时不能工作
- php - 如何使用 Push in array 创建完美的数组(woocommerce 重新创建购物车)
- pandas - 如何使用索引对多标签表示进行编码?
- networking - 网站的 IP 地址和托管该网站的网络服务器的 IP 地址有什么区别?
- html - Positioning input within div