$setIsSubset (Check Subset Relation)
Last updated: 2026-10-09
$setIsSubset (Check Subset Relation)
$setIsSubset checks whether every element of the first array also appears in the second — that is, whether the first set is a subset of the second. Typical uses: verifying that a user's permissions cover all permissions an operation requires, or that chosen tags all belong to an allowed list. An empty first array returns true; an empty second array with a non-empty first returns false. null elements are ignored.
| Category | Set, Condition & Conversion |
|---|---|
| MongoDB Version | 1.0+ |
| Example Language | mongosh (Shell) |
📝 Syntax
{ $setIsSubset: [ <arrayA>, <arrayB> ] }
⚙️ Parameters
| array A | The candidate subset. |
|---|---|
| array B | The superset. |
Returns:true when every element of A is in B, otherwise false
▶ Example
Run the commands below in your local mongosh (requires a running mongod):
// $setIsSubset: are all selected permissions allowed
db.roles.aggregate([
{ $project: {
ok: { $setIsSubset: ['$selected', '$allowed'] }
} }
])
Output:
{ '_id': 1, 'ok': true }
📌 Notes
- An empty array is a subset of every set, returning true
- An empty superset with a non-empty candidate returns false
- null elements are ignored
🏷️ Related Tags
💡 Related Cases
More hands-on cases coming soon.
📚 Related Tutorials
❓ FAQ
QWhat does an empty first array return?
Atrue — the empty set is a subset of every set.
QHow does it differ from $setEquals?
A$setIsSubset checks one-way containment; $setEquals checks equality both ways.
QDoes order affect the result?
ANo — set semantics ignore order.