嵌套关系 MongoDb

Nested Relations MongoDb

我需要一些帮助。 我有 2 MongoDB 个我想要关联的集合。一个用于类别,另一个用于多媒体内容。一个类别可以包含一个多媒体内容和多个子类别。

通过管道执行聚合后,我得到返回格式(见图 1):Category.Media 内的媒体元素和 Category.Childs 内的子类别。我的问题是我不知道如何在子类别中再次插入媒体(见图 2)

我也把用过的管道放在下面

返回结果:

预期结果:

管道:

[
    {
        "$match": {
            "id_site": 3,
            "id_parent": null,
            "id_class": null
        }
    },
    {
        "$lookup": {
            "from": "categories",
            "localField": "_id",
            "foreignField": "id_parent",
            "as": "Childs"
        }
    },
    {
        "$lookup": {
            "from": "media",
            "localField": "id_media",
            "foreignField": "_id",
            "as": "Media"
        }
    }
]

提前致谢。 任何建议表示赞赏。

您必须修改第一个 $lookup 以使用 pipeline(从 v3.6 开始可用)

[
    {
        "$match": {
            "id_site": 3,
            "id_parent": null,
            "id_class": null
        }
    },
    {
        "$lookup": {
            "from": "categories",
            "let": {
                "cid": "$_id"
            },
            "pipeline": [
                {
                    "$match": {
                        "$expr": { $eq: ["$id_parent", "$$cid"] }
                    }
                },
                {
                    "$lookup": {
                        "from": "media",
                        "localField": "id_media",
                        "foreignField": "_id",
                        "as": "Media"
                    }
                }
            ],
            "as": "Childs"
        }
    },
    {
        "$lookup": {
            "from": "media",
            "localField": "id_media",
            "foreignField": "_id",
            "as": "Media"
        }
    }
]