Задать вопрос
  • Как объединить 3 коллекции MongoDB?

    @Young_nigilist Автор вопроса
    Получилось сделать так:
    const restaurant = await Restaurant.aggregate([
            {
                "$match": { _id: ObjectId(req.params.id) }
            },
            {
                "$lookup": {
                    "from": "menus",
                    "localField": "menu",
                    "foreignField": "_id",
                    "as": "menu",
                }
            },
            { "$unwind": { "path": "$menu", "preserveNullAndEmptyArrays": true } },
            {
                "$lookup": {
                    "from": "products",
                    "localField": "menu.products",
                    "foreignField": "_id",
                    "as": "menu.products"
                }
            },
            {
                "$group": {
                    "_id": "$_id",
                    "name": { "$first": "$name" },
                    "hours": { "$first": "$hours" },
                    "image": { "$first": "$image" },
                    "phones": { "$first": "$phones" },
                    "takeAway": { "$first": "$takeAway" },
                    "description": { "$first": "$description" },
                    "address": { "$first": "$address" },
                    "user": { "$first": "$user" },
                    "menu": { "$push": "$menu" }
                }
            }
        ])
    Ответ написан
    Комментировать