Użyj $group aby pobrać tablicę ze wszystkich dokumentów, a następnie $reduce z $concat aby uzyskać jeden ciąg:
db.col.aggregate([
{
$group: {
_id: null,
text: { $push: "$text" }
}
},
{
$project: {
text: {
$reduce: {
input: "$text",
initialValue: "",
in: {
$cond: [ { "$eq": [ "$$value", "" ] }, "$$this", { $concat: [ "$$value", " ", "$$this" ] } ]
}
}
}
}
}
])
Po $group
otrzymasz pojedynczy dokument, który zawiera tablicę wszystkich text
wartości. Następnie $reduce
"skanuje" tablicę i łączy stan ($$value
) z aktualnie przetwarzaną pozycją. Dla pierwszego elementu stan będzie pustym ciągiem, więc używam $cond
aby uniknąć białych znaków na początku.