AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
See how MongoDB 9.0 delivers up to 2x higher throughput.
MongoDB Branding Shape
Register now >
Docs Menu

$concatArrays(ウィンドウ関数)

$concatArrays

ウィンドウ内のドキュメントから連結された配列値の配列を返します。

注意

曖昧さ回避

このページでは、ウィンドウ関数として使用する場合の$concatArrays について説明します。

次の他のコンテキストでは $concatArrays を使用することもできます。

{
$setWindowFields: {
...
output: {
<field>: {
$concatArrays: "<array field>"
}
}
}
}

null であるか、null に解決される引数は結果に含まれます。欠落しているフィールドを参照する引数は結果に含まれません。

以下の例では、sample_mflix サンプル データセットの movies コレクションを使用します。このデータセットを配置にロードする方法について詳しくは、「サンプル データセットのロード」を参照してください。

この例では、$setWindowFields genresを使用して映画をリリース年ごとに分割し、各パーティション内の 配列をタイトル順に連結します。各ドキュメントは、パーティション内の最初の映画から現在のドキュメントまでの 配列の連結を受け取ります。genres

db.movies.aggregate( [
{ $match: { year: { $in: [1914, 1915] } } },
{ $setWindowFields: {
partitionBy: { year: "$year" },
sortBy: { title: 1 },
output: {
combinedGenres: {
$concatArrays: "$genres",
window: { documents: ["unbounded", "current"] }
}
}
} },
{ $project: { _id: 0, year: 1, title: 1, combinedGenres: 1 } }
] )

先行するパイプライン:

  • を使用して、 と $setWindowFieldsで映画を分割し、各パーティションを でソートします。ステージでは、year partitionBytitle$concatArraysgenresのドキュメントウィンドウを介して フィールドに が適用されます。[ "unbounded", "current" ] combinedGenresフィールドには、パーティションの最初の映画から現在のドキュメントまでの連結されたジャンルが保持されます。

  • $projectyearを使用して、 、title 、combinedGenres を出力に含めます。

combinedGenres 配列は、各ドキュメントがgenres 配列に貢献するにつれて、各パーティション内で大きくなります。

このページを評価