Mongo $ addField Для вложенных структурированных данных - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть результат, как показано ниже, есть ли способ, которым я могу изменить значение _id, которое является одинаковым для всех вложенных данных.Я хочу переименовать каждый идентификатор с другим именем, а не просто _id

{
     "items": [
                {
                    "_id": "5bd1a3da2901d60f9edc4d10",
                    "addons": [
                        {
                            "_id": "5bd1a3da2901d60f9edc4d96",
                            "options": [
                                {
                                    "_id": "5bd1a3da2901d60f9edc4d98",
                                }
                            ],
                        }
                    ]
                }
            ] 
    }

Здесь, в приведенном выше коде, я пробовал атрибут $addfields, но он отлично работает только для самого верхнего вложения. Вот код, который япопробовал:

Items.aggregate([
            { 
                $match: {  _id: '123'}
            },      
            { $addFields: { item_id: "$_id" , 
                            "addons.addon_id" :  "$addons._id" , 
                   "addons.options.options_id" : "$addons.options._id" 
                 } 
             },
            {
                $project: {
                    _id: 0
                }
            },
        ],

Этот код работает нормально и добавил item_id в корневой элемент, но добавил addon и option_id в качестве значения массива,

{
    "item_list": [
        {
            "_id": "5bd1a3da2901d60f9edc4d10",
            "addons": [
                {
                    "_id": "5bd1a44b2901d60f9edc4d9a",
                    "options": [
                        {
                            "_id": "5bd1a44b2901d60f9edc4d9b",
                            "options_id": [
                                [
                                    "5bd1a44b2901d60f9edc4d9b"
                                ]
                            ]
                        }
                    ],
                    "addon_id": [
                        "5bd1a44b2901d60f9edc4d9a"
                    ]
                }
            ]
        }
    ]
}

Я получил что-то вроде этого вложенногомассив addon_id и options_id, я хочу, чтобы это была простая строка, а не массив,

{
    "item_list": [
        {
            "_id": "5bd1a3da2901d60f9edc4d10",
            "addons": [
                {
                    "_id": "5bd1a44b2901d60f9edc4d9a",
                    "options": [
                        {
                            "_id": "5bd1a44b2901d60f9edc4d9b",
                            "options_id": "5bd1a44b2901d60f9edc4d9b"
                        }
                    ],
                    "addon_id": "5bd1a44b2901d60f9edc4d9a"
                }
            ]
        }
    ]
}

Ожидаю вышеуказанный результат.

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