$setIsSubset(判断子集关系)
最后更新:2026-10-09
$setIsSubset(判断子集关系)
$setIsSubset 判断第一个数组的所有元素是否都出现在第二个数组中,即第一个集合是否为第二个的子集。典型场景包括检查用户权限是否覆盖某操作所需的全部权限、验证所选标签是否都属于允许列表。第一个数组为空时返回 true,第二个为空而第一个非空时返回 false。null 元素被忽略。
| 分类 | 集合·条件·转换 |
|---|---|
| MongoDB 版本 | 1.0+ |
| 示例语言 | mongosh (Shell) |
📝 语法
{ $setIsSubset: [ <数组A>, <数组B> ] }
⚙️ 参数
| 数组A | 候选子集。 |
|---|---|
| 数组B | 母集。 |
返回值:A 的元素全部在 B 中返回 true,否则 false
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// $setIsSubset:所选权限是否都被允许
db.roles.aggregate([
{ $project: {
ok: { $setIsSubset: ['$selected', '$allowed'] }
} }
])
运行结果:
{ '_id': 1, 'ok': true }
📌 注意事项
- 空数组是任何集合的子集,返回 true
- 母集为空且候选非空时返回 false
- null 元素被忽略
🏷️ 相关标签
💡 相关案例
更多实战案例即将上线,敬请期待。
📚 相关教程
❓ 常见问题
Q第一个数组为空返回什么?
A返回 true,空集是任何集合的子集。
Q与 $setEquals 的区别?
A$setIsSubset 是单向包含,$setEquals 是双向相等。
Q结果受顺序影响吗?
A不受,集合语义忽略顺序。