AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

$setUnion(アキュムレータ演算子)

$setUnion

ドキュメントのグループ全体で、配列値内のユニークな要素の配列を返します。

バージョン8.1の新機能。

$setUnion アキュムレータは次のステージで使用可能です。

注意

曖昧さ回避

このページでは、$setUnion をアキュムレータとして使用する場合について説明します。アキュムレータは、入力ドキュメントのグループ全体で単一の集計値を返します。

$setUnion は、これらの他のコンテキストでも使用できます。

{ $setUnion: "<array field>" }

$setUnion 配列をセットとして扱い、配列に対してセット操作を実行します。配列に重複エントリが含まれている場合、$setUnion は重複エントリを無視します。$setUnion は要素の順序を無視します。

$setUnion は結果内の重複を除外して、一意のエントリのみを含む配列を出力します。出力配列内の要素の順序は指定されていません。

セットにネストされた配列要素が含まれている場合、$setUnion はネストされた配列に下降 せず 、最上位の配列を評価します。

$setUnion がネストされた配列要素をどのように処理するかを確認するには、$setUnion (expression) セクションの例を参照してください。

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

このページの例では、sample_mflix データセット のデータを使用しています。自己管理型 MongoDB 配置にこのデータセットをロードする方法の詳細については、「サンプル データセットのロード」を参照してください。サンプル データベースに何らかの変更を加えた場合は、今ページの例を実行するには、データベースを削除して再作成する必要がある可能性があります。

この例では、$setUnion を使用して、3 人の特定の役員が手がけた個別のジャンルを返します。

db.movies.aggregate( [
{
$unwind: "$directors"
},
{
$match: {
directors: {
$in: [ "Christopher Nolan", "Sofia Coppola", "Spike Lee" ]
}
}
},
{
$group: {
_id: "$directors",
movieCount: { $sum: 1 },
genres: { $setUnion: "$genres" }
}
},
{
$sort: { _id: 1 }
}
] )

以前のパイプライン:

  • $unwind を使用して、各役員クレジットに個別のドキュメントを作成します。

  • $match を使用して、3 人の特定の役員をフィルターします。

  • $group を使用して役員別にグループ化し、$sum を使用して映画をカウントし、$setUnion を使用して役員のすべての映画の genres 配列を統合し、一意のジャンルの配列にまとめます。

  • $sort を使用して、役員名で結果をソートします。

  • $setUnion は、配列と配列に解決される式のみをサポートします。
このページを評価