MongoDB конвертировать массив объектов в один объект - PullRequest
0 голосов
/ 19 января 2019

Используя агрегатный запрос MongoDB, как мне преобразовать массив документов в один документ. Массив может содержать N документов.

До

"loop" : [
    {
        "field1" : "1"
    }, 
    {
        "field2" : "2", 
        "field3" : "3", 
    }, 
    {
        "field4" : "4", 
    }, 
    {
        "field5" : "5", 
        "field6" : "6"
    }
]

* После 1009 *

"loop" : {
    "field1" : "1",
    "field2" : "2", 
    "field3" : "3", 
    "field4" : "4", 
    "field5" : "5", 
    "field6" : "6"
}

Ответы [ 2 ]

0 голосов
/ 19 января 2019

На основании приведенного выше ответа Veeram с использованием $ mergeObjects приведем более сжатый запрос с использованием $ project.

Запрос

db.loop.aggregate(
    [{
        "$project": {
            "loop": { $mergeObjects: "$loop" }
        }
    }]
)    

Результат

{ 
    "loop" : {
        "field1" : "1", 
        "field2" : "2", 
        "field3" : "3", 
        "field4" : "4", 
        "field5" : "5", 
        "field6" : "6"
    }
}
0 голосов
/ 19 января 2019

Вы можете использовать агрегацию ниже 3,6 и выше.

db.colname.aggregate(
 [{"$project":{
    "loop":{
      "$reduce":{
        "input":"$loop",
        "initialValue":{},
        "in":{"$mergeObjects":["$$value","$$this"]
        }
      }
    }
 }}]
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...