このバージョンのドキュメントはアーカイブされており、サポートされなくなりました。5.0 配置をアップグレードするには、 MongoDB 6.0 のアップグレード手順 を参照してください。
定義
- $setEquals
- 2 つ以上の配列を比較し、それらが同じ明確な要素を持つ場合は - trueを返し、そうでない場合は- falseを返します。- $setEqualsの構文は次のとおりです。- { $setEquals: [ <expression1>, <expression2>, ... ] } - 引数は、それぞれが配列に変換される限り、有効な式であれば何でも使用できます。 式の詳細については、「式 」を参照してください。 
動作
$setEqualsは、配列をセットとして扱い、配列に対してセット演算を実行します。 配列に重複エントリが含まれている場合、 $setEqualsは重複エントリを無視します。 $setEqualsは要素の順序を無視します。
セットにネストされた配列要素が含まれている場合、 $setEqualsはネストされた配列に下降 せず、最上位の配列を評価します。
| 例 | 結果 | 
|---|---|
| 
 | 
 | 
| 
 | 
 | 
例
以下のドキュメントを持つbakeryOrdersコレクションを考えてみましょう。
db.bakeryOrders.insertMany( [    { _id: 0, cakes: ["chocolate", "vanilla"], cupcakes: ["chocolate", "vanilla"] },    { _id: 1, cakes: ["chocolate", "vanilla"], cupcakes: ["vanilla", "chocolate"] },    { _id: 2, cakes: ["chocolate", "chocolate"], cupcakes: ["chocolate"] },    { _id: 3, cakes: ["vanilla"], cupcakes: ["chocolate"] },    { _id: 4, cakes: ["vanilla"], cupcakes: [] } ] ) 
次の操作では、 $setEquals演算子を使用して、各順序のcakes配列とcupcakes配列に同じフレーバーが含まれているかどうかを判断します。
db.bakeryOrders.aggregate(    [       {          $project: {             _id: 0,             cakes: 1,             cupcakes: 1,             sameFlavors: { $setEquals: [ "$cakes", "$cupcakes" ] }          }       }    ] ) 
注意
$project
この操作は次の結果を返します。
{  cakes: [ "chocolate", "vanilla" ],  cupcakes: [ "chocolate", "vanilla" ],  sameFlavors: true }, {  cakes: [ "chocolate", "vanilla" ],  cupcakes: [ "vanilla", "chocolate" ],  sameFlavors: true }, {  cakes: [ "chocolate", "chocolate" ],  cupcakes: [ "chocolate" ],  sameFlavors: true }, {  cakes: [ "vanilla" ],  cupcakes: [ "chocolate" ],  sameFlavors: false }, {    cakes: [ "vanilla" ],    cupcakes: [],    sameFlavors: false }