Gunakan $group untuk mendapatkan larik dari semua dokumen dan kemudian $reduce dengan $concat untuk mendapatkan satu string:
db.col.aggregate([
{
$group: {
_id: null,
text: { $push: "$text" }
}
},
{
$project: {
text: {
$reduce: {
input: "$text",
initialValue: "",
in: {
$cond: [ { "$eq": [ "$$value", "" ] }, "$$this", { $concat: [ "$$value", " ", "$$this" ] } ]
}
}
}
}
}
])
Setelah $group
anda akan mendapatkan satu dokumen yang berisi larik semua text
nilai-nilai. Kemudian $reduce
"memindai" array dan menggabungkan status ($$value
) dengan item yang sedang diproses. Untuk status item pertama akan menjadi string kosong jadi saya menggunakan $cond
untuk menghindari spasi putih di awal.