$group を使用します すべてのドキュメントから配列を取得してから、 $ reduce $concat を使用 1つの文字列を取得するには:
db.col.aggregate([
{
$group: {
_id: null,
text: { $push: "$text" }
}
},
{
$project: {
text: {
$reduce: {
input: "$text",
initialValue: "",
in: {
$cond: [ { "$eq": [ "$$value", "" ] }, "$$this", { $concat: [ "$$value", " ", "$$this" ] } ]
}
}
}
}
}
])
$group
の後 すべてのtext
の配列を含む単一のドキュメントを取得します 値。次に、$reduce
配列を「スキャン」し、状態を連結します($$value
)現在処理されているアイテムを使用します。最初のアイテムの状態は空の文字列になるため、$cond
を使用しています 最初に空白がないようにします。