Usa $group per ottenere un array da tutti i documenti e quindi $reduce con $concat per ottenere una stringa:
db.col.aggregate([
{
$group: {
_id: null,
text: { $push: "$text" }
}
},
{
$project: {
text: {
$reduce: {
input: "$text",
initialValue: "",
in: {
$cond: [ { "$eq": [ "$$value", "" ] }, "$$this", { $concat: [ "$$value", " ", "$$this" ] } ]
}
}
}
}
}
])
Dopo $group
otterrai un unico documento che contiene un array di tutto il text
i valori. Quindi $reduce
"scansiona" l'array e concatena lo stato ($$value
) con l'elemento attualmente elaborato. Per il primo elemento lo stato sarà una stringa vuota, quindi sto usando $cond
per evitare di avere spazi bianchi all'inizio.