将猫鼬$ lookup结果添加到嵌套文档

时间:2020-06-18 12:11:52

标签: mongodb mongoose nested aggregate

我已经在很基本的功能上苦苦挣扎了很长时间,在网上找不到任何好的解决方案。

我的问题很简单。我的数据库中有这样的文档:

// document 1
{
    _id: "0000000000001",
    name: "document 1 name",
    document2s: [ "0000000000002" ] // array of ids of document2s
}

// document 2
{
    _id: "0000000000002",
    name: "document 2 name",
    document3s: [ "0000000000003" ] // array of ids of document3s
}

// document 3
{
    _id: "0000000000003",
    name: "document 3 name",
}

我想编写一个聚合以获取此结果:

{
    _id: "0000000000001",
    name: "document 1 name",
    document2s: [ 
        {
            _id: "0000000000002",
            name: "document 2 name",
            document3s: [
                {
                    _id: "0000000000003",
                    name: "document 3 name",
                }
            ]
        }
    ]
}

使用$ lookup进行聚合非常简单,但是结果却是平坦的(document2和document3在document1内处于同一级别)。我希望将对象嵌套在它们所属的位置。这很难。我设法将其拉到一个嵌套级别(使用$ group),但是对于两个嵌套级别(或更多个嵌套),我无法使其正常工作。

请注意,在每个级别上,文档ID都是数组

任何帮助将不胜感激!

0 个答案:

没有答案