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 を持つ映画をカウントし、監督のすべての映画のgenres 配列を$setUnion を持つ一意のジャンルの単一の配列に結合します。

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

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