使用MongoDB聚合查询,如何将一系列文档转换为单个文档。该数组可以包含N个文档。
之前
"loop" : [
{
"field1" : "1"
},
{
"field2" : "2",
"field3" : "3",
},
{
"field4" : "4",
},
{
"field5" : "5",
"field6" : "6"
}
]
之后
"loop" : {
"field1" : "1",
"field2" : "2",
"field3" : "3",
"field4" : "4",
"field5" : "5",
"field6" : "6"
}
答案 0 :(得分:2)
您可以在3.6及更高版本中使用以下聚合。
db.colname.aggregate(
[{"$project":{
"loop":{
"$reduce":{
"input":"$loop",
"initialValue":{},
"in":{"$mergeObjects":["$$value","$$this"]
}
}
}
}}]
)
答案 1 :(得分:1)
基于上面使用$ mergeObjects的Veeram的答案,这是使用$ project的更为简洁的查询。
查询
db.loop.aggregate(
[{
"$project": {
"loop": { $mergeObjects: "$loop" }
}
}]
)
结果
{
"loop" : {
"field1" : "1",
"field2" : "2",
"field3" : "3",
"field4" : "4",
"field5" : "5",
"field6" : "6"
}
}