Use $group para obter uma matriz de todos os documentos e, em seguida, $reduce com $concat para obter uma string:
db.col.aggregate([
{
$group: {
_id: null,
text: { $push: "$text" }
}
},
{
$project: {
text: {
$reduce: {
input: "$text",
initialValue: "",
in: {
$cond: [ { "$eq": [ "$$value", "" ] }, "$$this", { $concat: [ "$$value", " ", "$$this" ] } ]
}
}
}
}
}
])
Após
$group
você obterá um único documento que contém uma matriz de todos os text
valores. Então $reduce
"varre" o array e concatena o estado ($$value
) com o item atualmente processado. Para o primeiro estado do item será uma string vazia, então estou usando $cond
para evitar ter espaços em branco no início.