如何在MongoDB中与数组中的嵌套文档进行聚合

时间:2017-12-15 00:03:40

标签: mongodb mongodb-query aggregation-framework

假设我的文档具有树状结构,可以任意嵌套,例如:

{
"_id" : "abc123",
"Node1" : {
    "type" : "type2
    "value" : 3,
    "children" : [ 
        "Node2" : {
            "type" : "type1"
            "value" : 1,
            "children" ; [],
        }, 
        "Node3" : {
            "type" : "type2",
            "value" : 10,
            "children" ; [
                "Node5" : {
                    "type" : "type1",
                    "value" : 3
                    "children" : [],
                }
             ],
        }
        "Node4" : {
            "type" : "type3",
            "value" : 3
            "children" : [],
        }
    ],
},
}

请注意,节点可以在子数组中任意嵌套,任何节点类型都可以出现在任何嵌套级别。

我希望能够创建一个每个节点类型出现的直方图。有没有办法输出包含每个节点类型的文档以及节点类型在输入文档中出现的次数,可能使用MongoDB的聚合函数?如果不是这样,我想我可以使用map-reduce功能来做到这一点。如果没有,我是否只需要编写一个遍历每个文档并自己构建表的程序,或者我是否缺少其他一些MongoDB功能。

提前致谢。

-Mark

0 个答案:

没有答案