このバージョンのドキュメントはアーカイブされており、サポートされなくなりました。6.0 配置をアップグレードするには、 MongoDB 7.0 のアップグレード手順 を参照してください。
定義
例
$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フィールドを含む