Как обновить объект mongodb, чтобы изменить массив значений ключа в чистом массиве? - PullRequest
0 голосов
/ 12 сентября 2018

Я сохранил в каждом документе в MongoDB поле под названием «дорожка». Внутри каждого есть объект с ключами, такими как «0», «1» и так далее. Я должен заменить эту часть с массивом.

Фактическая ситуация

"track" : {
                "0" : {
                        "name" : "Crossdromo A",
                        "type" : "Motocross"
                },
                "1" : {
                        "name" : "Crossdromo B",
                        "type" : "Minicross"
                }
        }

Desiderata

"track" : [
                {
                        "name" : "Crossdromo A",
                        "type" : "Motocross"
                },
                {
                        "name" : "Crossdromo B",
                        "type" : "Minicross"
                }
        ]

Есть предложения, как это изменить?

1 Ответ

0 голосов
/ 13 сентября 2018

Вы можете использовать следующее агрегирование :

db.getCollection('samples').aggregate([{ //Replace 'samples' with your collection name
    $match: {} //You can change this to any query if you don't want to apply it to all documents in the collection
},
{
    $addFields: {
        track: {
            $objectToArray: '$track'  //This converts it to [{k: '0', v: { "name" : "Crossdromo A", "type" : "Motocross" }}, {k: 1,..]
        }
    }
}, {
    $addFields: {
        track: '$track.v' //This pulls the 'v' key  from the previous object.
    }
}, {
    $out: 'samples' //Replace 'samples' with your collection name   
}])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...