Извлечение всех внуков из одной коллекции с помощью Self join в mongoose - PullRequest
1 голос
/ 07 октября 2019

В настоящее время у меня есть одна коллекция "Category", которая имеет самостоятельное соединение с ref на родительском столбцеВ этом у меня есть 3 документа.

  • Документ 1 является родительским.
  • Документ 2 является дочерним по отношению к Документу 1
  • Документ 3 является дочерним по отношению к Документу 2

CategoryModel

var CategoryTable = new Schema({
categoryName : String,
parent : {
    type : ObjectID,
    ref : 'category',
    default : null
}
});

MyCode

CategoryModel
    .aggregate([
        {
            $match : { "parent" : null }
        },
        {
            "$lookup":{
                "from" : "categories",
                "localField":"_id",
                "foreignField":"parent",
                "as": "child"
            }
        }
    ])
    .exec((err,data) => {
        if(err)
        {
            throw err;
        }
        res.send(data);
    })

Токовый выход

[
{
    "_id": "5d8de924b4672e2744dedbb9",
    "parent": null,
    "categoryName": "Software",
    "__v": 0,
    "child": [
        {
            "_id": "5d8de972b4672e2744dedbba",
            "parent": "5d8de924b4672e2744dedbb9",
            "categoryName": "Antivirus",
            "__v": 0
        }
    ]
}
]

Ожидаемый выход

[
{
    "_id": "5d8de924b4672e2744dedbb9",
    "parent": null,
    "categoryName": "Software",
    "__v": 0,
    "child": [
        {
            "_id": "5d8de972b4672e2744dedbba",
            "parent": "5d8de924b4672e2744dedbb9",
            "categoryName": "Antivirus",
            "__v": 0,
            "child": [
                         {
                           "_id": "5d8e1a303bcfb6085c48e4dc",
                           "parent": "5d8de972b4672e2744dedbba",
                           "categoryName": "Quick Heal",
                           "__v": 0
                         }
                    ]
        }
    ]
}
]

Я хочу получить всю коллекцию дочерних и дочерних элементов, используя агрегат. Может кто-нибудь помочь мне в этом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...