如何计算和获取数组字段mongodb中的struct元素的分布?

时间:2018-09-04 16:48:49

标签: javascript arrays mongodb aggregation-framework

您好,我正在使用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"一次...

1 个答案:

答案 0 :(得分:0)

您可以使用以下汇总:

db.col.aggregate([
    {
        $unwind: "$data"
    },
    {
        $match: { "data.key": "d_ont" }
    },
    {
        $group: {
            _id: "$data.value",
            total: { $sum: 1 }
        }
    }
])

$unwinddata的每个元素转换成一个单独的文档。然后,您可以使用$match应用过滤条件,并使用$group获取每个值(分布)的计数