$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"] }
📌 注意事項
- 要素はユニークで、重複は 1 つに潰れる
- 順序は保証されない。必要なら自分で整列する
- 重複判定は BSON の等値性(型と値が同じ)に基づく
🏷️ 関連タグ
💡 関連ケース
📚 関連チュートリアル
❓ よくある質問
Q$addToSet と $push の違いは?
A$push は重複を保持します。$addToSet は重複を除去します。
Q順序は保証されますか?
Aいいえ。要素の順序は保証されないので、必要なら結果を自分で整列してください。
Q配列要素の重複を除去できますか?
A直接はできません。配列全体の値を比較する仕組みなので、まず $unwind で平坦化してください。