$setIsSubset (部分集合の関係を確認)
最終更新:2026-10-09
$setIsSubset (部分集合の関係を確認)
$setIsSubset は、最初の配列のすべての要素が 2 番目の配列にも含まれるか、つまり最初の集合が 2 番目の部分集合かを判定します。代表的な用途は、ユーザーの権限が操作に必要なすべての権限をカバーしているかの確認や、選択したタグがすべて許可リストに属するかのチェックです。空の最初の配列は true を返し、空の 2 番目の配列で最初の配列が空でない場合は false を返します。null 要素は無視されます。
| カテゴリ | 集合・条件・変換 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $setIsSubset: [ <arrayA>, <arrayB> ] }
⚙️ パラメータ
| 配列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空の最初の配列は何を返しますか?
Atrue です — 空集合はすべての集合の部分集合です。
Q$setEquals との違いは?
A$setIsSubset は片方向の包含を確認します。$setEquals は両方向の等価性を確認します。
Q順序は結果に影響しますか?
Aいいえ — 集合の意味論は順序を無視します。