MongoDb聚合查找嵌套数组

时间:2017-09-29 14:16:58

标签: javascript node.js mongodb

假设我有一个包含以下文档的MongoDB集合:

{
    _id,
    name: "someName",
    children:[
        ObjectId,
        ObjectId,
    ]
}

是否可以使用聚合框架和查找与子进行深度嵌套?另一个问题是我们通常不知道孩子的查找字段是什么,因此孩子有一个“Lookup”数组,其中包含应该在数据库中查找的字段。

例如,结果的深度为3:

{
    _id,
    name: "someName",
    children:[
        {
            _id,
            name: "someName",
            children:[
                {
                    _id,
                    name: "someName",
                    children:[
                        ObjectId,
                        ObjectId,
                    ]
                }
                {
                    _id,
                    name: "someName",
                    children:[
                        ObjectId,
                        ObjectId,
                    ]
                }
            ]
        },
        {
            _id,
            name: "someName",
            children:[
                ObjectId,
                ObjectId,
            ]
        }
    ]
}

我希望能够创建一个能够指定查找“深度”的函数。

我们正在使用mongodb NodeJs驱动程序。

1 个答案:

答案 0 :(得分:0)

我在这里看到两个解决方案:

  1. 更改架构并尝试使用嵌套集模式。请参阅https://docs.mongodb.com/manual/tutorial/model-tree-structures-with-nested-sets/

  2. 使用递归函数来获取所需的所有数据,但是您将遇到诸如N聚合方法调用之类的问题