$setUnion (和集合)
最終更新:2026-10-09
$setUnion (和集合)
$setUnion は、複数の配列の和集合を重複除去して返します。要素の順序は保証されません。集合演算として $project や $addFields でよく使われ、MongoDB 8.1 以降は $group のアキュムレータとしても機能します。$concatArrays と違い、重複を除去します。タグや権限リストのマージに向きます。
| カテゴリ | アキュムレータ |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $setUnion: [ <array1>, <array2>, ... ] }
戻り値:すべての入力配列の和集合(重複排除、順序なし)
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $setUnion: タグ配列をマージして重複を除去
db.products.aggregate([
{ $project: { allTags: { $setUnion: ['$tags', ['hot']] } } }
])
出力:
// 既存のタグは重複しない
📌 注意事項
- 自動で重複を除去 — 真の集合
- 要素の順序は保証されない
- MongoDB 8.1 以降、$group のアキュムレータとして使える
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q$setUnion と $concatArrays の違いは?
A$setUnion は重複を除去し順序を保証しません。$concatArrays は順序どおり全要素を保持します。
Q入力は配列である必要がありますか?
Aはい。全入力が配列でないとエラーになります。
Q$group のアキュムレータにできますか?
AMongoDB 8.1 以降はできます。グループ全体の集合フィールドを和集合にします。