$setEquals (集合の等価性を確認)
最終更新:2026-10-09
$setEquals (集合の等価性を確認)
$setEquals は、2 つ以上の配列が集合として等しいかを、順序と重複を無視して判定します。代表的な用途は、2 つの権限リストが一致するかの確認や、設定と既定値の比較です。複数の引数を受け付け、すべての配列が集合として等しいときだけ true を返します。null 要素は無視されるため、null を含む配列は null がないものとして比較されます。順序は関係ありません。[1, 2] と [2, 1] は等しいと判定されます。
| カテゴリ | 集合・条件・変換 |
|---|---|
| MongoDB バージョン | 1.0+ |
| 例の言語 | mongosh(シェル) |
📝 構文
{ $setEquals: [ <array1>, <array2>, ... ] }
⚙️ パラメータ
| 配列 | 比較する少なくとも2つの配列。 |
|---|
戻り値:すべての配列が集合として等しい場合は true、それ以外は false
▶ 例
以下のコマンドをローカルの mongosh で実行してください(mongod が起動済みである必要があります):
// $setEquals: 2 つの権限リストが一致するか
db.roles.aggregate([
{ $project: {
samePerms: { $setEquals: ['$userPerms', '$defaultPerms'] }
} }
])
出力:
{ '_id': 1, 'samePerms': true }
📌 注意事項
- 順序と重複は無視される: [1, 2] と [2, 1, 1] は等しい
- 複数の引数に対応。true になるのはすべてが集合として等しいときだけ
- null 要素はあたかも存在しないかのように無視される
🏷️ 関連タグ
💡 関連ケース
さらなる実践ケースを近日公開予定。
📚 関連チュートリアル
❓ よくある質問
Q順序は結果に影響しますか?
Aいいえ — 集合比較では順序は無視されます。
Qいくつの引数に対応していますか?
A2 つ以上です。すべてが集合として等しいときだけ true になります。
Qnull を含む配列は?
Anull 要素は無視されるため、含まないバージョンと同じ結果になります。