$nor
定義
例
$nor
2 つの式を使ったクエリ
$nor
演算子のみを使用する次のクエリを検討してください。
db.inventory.find( { $nor: [ { price: 1.99 }, { sale: true } ] } )
このクエリは、以下のすべてのドキュメントを返します。
値が
1.99
と等しくないprice
フィールドを含み、かつ値がtrue
と等しくないsale
フィールドを含む、あるいは値が
1.99
と等しくないprice
フィールドを含むが、sale
フィールドを含まない、あるいはprice
フィールドを含まず、しかし値がtrue
と等しくないsale
フィールドを含む、あるいはprice
フィールドを含まず、かつsale
フィールドも含まないドキュメント
$nor
およびその他の比較
次のクエリを考えてみましょう。
db.inventory.find( { $nor: [ { price: 1.99 }, { qty: { $lt: 20 } }, { sale: true } ] } )
このクエリは、次の条件を満たす inventory
コレクション内のすべてのドキュメントを選択します。
price
フィールドの値が1.99
と等しくなく、かつqty
フィールドの値が20
より小さくなく、かつsale
フィールドの値がtrue
と等しくない
これらのフィールドを含まないドキュメントも含まれます。
$nor
式に フィールドを含まないドキュメントを返す例外は、 $nor
演算子が $exists
演算子とともに使用されている場合です。
$nor
および $exists
これを、 $nor
演算子と$exists
演算子を使用する次のクエリと比較してください。
db.inventory.find( { $nor: [ { price: 1.99 }, { price: { $exists: false } }, { sale: true }, { sale: { $exists: false } } ] } )
このクエリは、以下のすべてのドキュメントを返します。
値が
1.99
と等しくないprice
フィールドを含み、かつ値がtrue
と等しくないsale
フィールドを含む