$addToSet (ユニーク配列アキュムレータ)

最終更新:2026-10-09

$addToSet (ユニーク配列アキュムレータ)

$addToSet は、$group 中に各ドキュメントの式の結果を配列へ追加していくアキュムレータで、重複を自動的に除去します — 同じ値は 1 回だけ現れます。$push に似ますがユニーク性を保証します。タグや顧客リストなど重複排除の用途に向きます。要素の順序は保証されません。

カテゴリアキュムレータ
MongoDB バージョン1.0+
例の言語mongosh(シェル)

📝 構文

{ $group: { _id: <key>, tags: { $addToSet: "$field" } } }

戻り値:式結果を重複排除した配列

▶ 例

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

// $addToSet: 顧客ごとのユニークなアイテム
db.orders.aggregate([
  { $group: { _id: '$cust_id', items: { $addToSet: '$item' } } }
])

出力:

{ "_id": "A123", "items": ["Pen", "Book"] }

📌 注意事項

📚 関連チュートリアル

❓ よくある質問

Q$addToSet と $push の違いは?
A$push は重複を保持します。$addToSet は重複を除去します。
Q順序は保証されますか?
Aいいえ。要素の順序は保証されないので、必要なら結果を自分で整列してください。
Q配列要素の重複を除去できますか?
A直接はできません。配列全体の値を比較する仕組みなので、まず $unwind で平坦化してください。
Web-Tutorial.com

Web-Tutorial 技術チーム

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

100%