您好,我正在使用MongoDB集合,其中包含数百万个文档,每个文档包含:
{
"_id" : NumberLong(566994152),
"data" : [
{
"key" : "der.0",
"value" : "Ision"
},
{
"key" : "d_ont",
"value" : "Co_OT"
},
{
"key" : "ol.tx",
"value" : "3.35"
}
.
.
.
.
],
"conclusion" : [
{
"rname" : "O",
"rulename" : "FTNT"
}
]
}
我的目标是根据键的名称来过滤此集合,例如key="d_ont"
,其结果是该键的不同值的数量以及每个值的分布。例如,键"d_ont"
有3个值:"value1"
50
倍"value2"
56
次和"value3"
一次... >
答案 0 :(得分:0)
您可以使用以下汇总:
db.col.aggregate([
{
$unwind: "$data"
},
{
$match: { "data.key": "d_ont" }
},
{
$group: {
_id: "$data.value",
total: { $sum: 1 }
}
}
])
$unwind
将data
的每个元素转换成一个单独的文档。然后,您可以使用$match
应用过滤条件,并使用$group
获取每个值(分布)的计数