$setEquals (Check Set Equality)
Last updated: 2026-10-09
$setEquals (Check Set Equality)
$setEquals checks whether two or more arrays are equal as sets, ignoring order and duplicates. Typical uses: verifying that two permission lists match or comparing a config with defaults. It accepts multiple arguments and returns true only when all arrays are set-equal. null elements are ignored, so arrays containing null compare as if the null were absent. Order does not matter: [1, 2] and [2, 1] are equal.
| Category | Set, Condition & Conversion |
|---|---|
| MongoDB Version | 1.0+ |
| Example Language | mongosh (Shell) |
📝 Syntax
{ $setEquals: [ <array1>, <array2>, ... ] }
⚙️ Parameters
| array | At least two arrays to compare. |
|---|
Returns:true when all arrays are set-equal, otherwise false
▶ Example
Run the commands below in your local mongosh (requires a running mongod):
// $setEquals: do two permission lists match
db.roles.aggregate([
{ $project: {
samePerms: { $setEquals: ['$userPerms', '$defaultPerms'] }
} }
])
Output:
{ '_id': 1, 'samePerms': true }
📌 Notes
- Order and duplicates are ignored: [1, 2] equals [2, 1, 1]
- Multiple arguments are supported; all must be equal for true
- null elements are ignored, as if absent
🏷️ Related Tags
💡 Related Cases
More hands-on cases coming soon.
📚 Related Tutorials
❓ FAQ
QDoes order affect the result?
ANo — set comparison ignores order.
QHow many arguments are supported?
AAt least two; true only when all are set-equal.
QWhat about arrays containing null?
Anull elements are ignored, so the result matches a version without them.