$addToSet (セットに追加)

最終更新:2026-10-09

$addToSet (セットに追加)

$addToSet は、配列に値がまだ存在しない場合のみ追加し、配列の重複を防ぎます。`{ $addToSet: { tags: 'mongodb' } }` のように使います。複数の値をまとめて追加するには $each と組み合わせます。重複判定は値全体を比較します(ネストしたドキュメントはフィールドごとに比較)。タグやフォローリストに最適です。

カテゴリ配列更新
MongoDB バージョン1.0+
例の言語mongosh(シェル)

📝 構文

{ $addToSet: { <array field>: <value> } }

⚙️ パラメータ

配列フィールド追加先の配列フィールド。
値追加する値。すでに存在する場合はスキップされます。

戻り値:更新結果

▶ 例

以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):

// $addToSet: タグを追加(あればスキップ)
db.articles.updateOne(
  { _id: 1 },
  { $addToSet: { tags: 'mongodb' } }
)

// 複数の値は $each が必要
db.articles.updateOne(
  { _id: 1 },
  { $addToSet: { tags: { $each: ['database', 'nosql'] } } }
)

出力:

// 既存の mongodb は重複せず、database と nosql が追加される

📌 注意事項

📚 関連チュートリアル

❓ よくある質問

Q$addToSet と $push の違いは?
A$addToSet は重複を排除します。$push は単純に追加し、重複も許可します。
Q複数の値を一度に追加するには?
A$each を使います: { $addToSet: { tags: { $each: ['a', 'b'] } } }
Q$addToSet はネストしたドキュメントを追加できますか?
Aはい。重複判定はドキュメント全体を比較します。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%