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