定義
ドキュメントのグループ全体で、配列値内のユニークな要素の配列を返します。
バージョン8.1の新機能。
$setUnion アキュムレータは次のステージで使用可能です。
注意
曖昧さ回避
このページでは、$setUnion をアキュムレータとして使用する場合について説明します。アキュムレータは、入力ドキュメントのグループ全体で単一の集計値を返します。
$setUnion は、これらの他のコンテキストでも使用できます。
$setUnion (expression), 2 つ以上の配列を一意の要素を含む単一の配列に結合します。$setUnion (window function)は、ウィンドウ内の配列値から一意の要素の単一の配列を返すために、$setWindowFieldsステージで使用されます。
構文
{ $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 } } ] )
以前のパイプライン:
制限
$setUnionは、配列と配列に解決される式のみをサポートします。