$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 }

📌 注意事項

さらなる実践ケースを近日公開予定。

📚 関連チュートリアル

❓ よくある質問

Q空の最初の配列は何を返しますか?
Atrue です — 空集合はすべての集合の部分集合です。
Q$setEquals との違いは?
A$setIsSubset は片方向の包含を確認します。$setEquals は両方向の等価性を確認します。
Q順序は結果に影響しますか?
Aいいえ — 集合の意味論は順序を無視します。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%