定義
$not$notでは、指定された<operator-expression>に対して論理NOT演算を実行し、<operator-expression>に一致しないドキュメントを選択します。これには、fieldを含まないドキュメントが含まれます。
互換性
次の環境でホストされる配置には $not を使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
構文
$not 演算子は次の形式をとります。
{ field: { $not: { <operator-expression> } } }
動作
次の例クエリについて考えてみます。
db.inventory.find( { price: { $not: { $gt: 1.99 } } } )
このクエリは、次のいずれかの条件を満たす inventoryコレクション内のすべてのドキュメントを選択します。
priceフィールドの値が1.99以下であるpriceフィールドの値が非数値priceフィールドが存在しない場合
{ $not: { $gt: 1.99 } } $lte演算子とは異なります。{ $lte: 1.99 } price1.99は、 フィールドが存在し、その値が 以下のドキュメントのみを返します。
$not 演算子を別の演算子式とともに使用します。等価性チェックに $not を使用するには、次を使用します。
{ price: { $not: { $eq: 1.99 } } }
上記のクエリは、次のものと同等です。
{ price: { $ne: 1.99 } }
次のクエリは、演算子のないフィールドを比較するため、無効です。
{ price: { $not: 1.99 } }
配列
$not演算子は配列で使用すると予期しない結果を引き起こすことがあります。複数の誤った条件に基づいてドキュメントを照合するには、 を使用します。$nor
正規表現
$notは論理NOT 操作をサポートします。
正規式オブジェクト(
/pattern/など)。次のクエリは、
itemフィールド値が文字pで始まっていないinventoryコレクション内のドキュメントを選択します。db.inventory.find( { item: { $not: /^p.*/ } } ) $regex演算子式。たとえば、次のクエリは、
inventoryコレクション内のitemフィールド値がpで始まるもの以外のすべてのドキュメントを選択します。db.inventory.find( { item: { $not: { $regex: "^p.*" } } } ) db.inventory.find( { item: { $not: { $regex: /^p.*/ } } } ) ドライバー言語の正規式オブジェクト。
例えとして、次の PyMongo クエリは Python の
re.compile()メソッドを使用して正規表現をコンパイルします。import re for noMatch in db.inventory.find( { "item": { "$not": re.compile("^p.*") } } ): print noMatch