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

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

$addToSet

グループ内の各ドキュメントで評価される 式のユニークな値の配列を返します。配列内の要素の順序は指定されていません。

$addToSet は、次のステージで使用できます。

注意

曖昧さ回避

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

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

{ $addToSet: <expression> }

式の詳細については、「式 」を参照してください。

式の値が配列の場合、$addToSet は配列全体を単一の要素として追加します。

式の値がドキュメントの場合、その配列内の別のドキュメントが、これから追加されるドキュメントと完全に一致すれば、MongoDB ではそのドキュメントが重複していると判断されます。具体的には、既存のドキュメントにまったく同じフィールドと値がまったく同じ順序で含まれている場合です。

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

次の操作では、映画を監督別にグループ化し、$addToSet アキュムレータを使用して、各監督が手がけた作品の一意のジャンルを収集します。読みやすさを向上させるため、パイプラインは結果をアルファベット順で最初の5人の役員に制限します。

db.movies.aggregate( [
{
$unwind: "$directors"
},
{
$unwind: "$genres"
},
{
$group: {
_id: "$directors",
genres: { $addToSet: "$genres" }
}
},
{
$sort: { _id: 1 }
},
{
$limit: 5
}
] )

このパイプラインは、次の結果を返します。

[
{ _id: 'A. Dean Bell', genres: [ 'Crime', 'Drama' ] },
{ _id: 'A. Karunakaran', genres: [ 'Romance' ] },
{ _id: 'A. Vanichkin', genres: [ 'Animation', 'Fantasy' ] },
{ _id: 'A.J. Edwards', genres: [ 'Biography', 'Drama', 'History' ] },
{
_id: 'A.R. Murugadoss',
genres: [ 'Drama', 'Sci-Fi', 'Thriller', 'Action', 'Mystery' ]
}
]
このページを評価