Verwenden Sie $group um ein Array aus allen Dokumenten zu erhalten und dann $reduce mit $concat um eine Zeichenfolge zu erhalten:
db.col.aggregate([
{
$group: {
_id: null,
text: { $push: "$text" }
}
},
{
$project: {
text: {
$reduce: {
input: "$text",
initialValue: "",
in: {
$cond: [ { "$eq": [ "$$value", "" ] }, "$$this", { $concat: [ "$$value", " ", "$$this" ] } ]
}
}
}
}
}
])
Nach $group
Sie erhalten ein einzelnes Dokument, das ein Array aller text
enthält Werte. Dann $reduce
"scannt" das Array und verkettet den Zustand ($$value
) mit aktuell bearbeitetem Artikel. Da der erste Elementstatus eine leere Zeichenfolge ist, verwende ich $cond
um Leerzeichen am Anfang zu vermeiden.