$setUnion (Set Union)
Last updated: 2026-10-09
$setUnion (Set Union)
$setUnion returns the union of two or more arrays, deduplicated, with no guaranteed element order. As a set expression it is common in $project and $addFields; since MongoDB 8.1 it can also act as a $group accumulator. Unlike $concatArrays, it deduplicates. Suits merging tags or permission lists.
| Category | Accumulators |
|---|---|
| MongoDB Version | 1.0+ |
| Example Language | mongosh (Shell) |
📝 Syntax
{ $setUnion: [ <array1>, <array2>, ... ] }
Returns:Union of all input arrays (deduplicated, unordered)
▶ Example
Run the commands below in your local mongosh (requires a running mongod):
// $setUnion: merge and deduplicate tag arrays
db.products.aggregate([
{ $project: { allTags: { $setUnion: ['$tags', ['hot']] } } }
])
Output:
// Existing tags are not duplicated
📌 Notes
- Deduplicates automatically — a true set
- Element order is not guaranteed
- Usable as a $group accumulator since MongoDB 8.1
🏷️ Related Tags
💡 Related Cases
More hands-on cases coming soon.
📚 Related Tutorials
❓ FAQ
QWhat is the difference between $setUnion and $concatArrays?
A$setUnion deduplicates and is unordered; $concatArrays keeps every element in order.
QMust the inputs be arrays?
AYes, every input must be an array or it errors.
QCan it be a $group accumulator?
ASince MongoDB 8.1, yes — unioning set fields across group documents.