Utilice $group para obtener una matriz de todos los documentos y luego $reduce con $concat para obtener una cadena:
db.col.aggregate([
{
$group: {
_id: null,
text: { $push: "$text" }
}
},
{
$project: {
text: {
$reduce: {
input: "$text",
initialValue: "",
in: {
$cond: [ { "$eq": [ "$$value", "" ] }, "$$this", { $concat: [ "$$value", " ", "$$this" ] } ]
}
}
}
}
}
])
Después de $group
obtendrá un único documento que contiene una matriz de todos los text
valores. Entonces $reduce
"escanea" la matriz y concatena el estado ($$value
) con el artículo actualmente procesado. Para el primer elemento, el estado será una cadena vacía, así que estoy usando $cond
para evitar tener espacios en blanco al principio.