Gebruik $group om een array van alle documenten te krijgen en vervolgens $reduce met $concat om één string te krijgen:
db.col.aggregate([
{
$group: {
_id: null,
text: { $push: "$text" }
}
},
{
$project: {
text: {
$reduce: {
input: "$text",
initialValue: "",
in: {
$cond: [ { "$eq": [ "$$value", "" ] }, "$$this", { $concat: [ "$$value", " ", "$$this" ] } ]
}
}
}
}
}
])
Na $group
je krijgt een enkel document dat een array bevat van alle text
waarden. Dan $reduce
"scant" de array en voegt de status samen ($$value
) met het momenteel verwerkte artikel. Voor het eerste item is de status een lege string, dus ik gebruik $cond
om witruimte aan het begin te voorkomen.