定義
- $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フィールドが存在しない場合
{ $not: { $gt: 1.99 } } $lte 演算子とは異なります。{ $lte: 1.99 } では、 price フィールドが存在し、その値が1.99 以下のドキュメントのみが返されます。
$not 演算子は別の演算子式とともに使用する必要があります。たとえば、$not を使用して非等価性チェックを実行するには、次の構文を使用します。
{ price: { $not: { $eq: 1.99 } } } 
上記のクエリは、次のものと同等です。
{ price: { $ne: 1.99 } } 
次の $not クエリは、演算子なしでフィールドを比較しようとするので無効です。
{ price: { $not: 1.99 } } 
動作
配列
配列引数が渡されると、$not 演算子は予期しない結果を返す可能性があります。複数の偽条件に基づいてドキュメントを照合するには、$nor を使用します。
正規表現
$not演算子は、以下に対して論理NOT演算を実行できます。
- 正規表現オブジェクト( - /pattern/)- たとえば、次のクエリは、 - inventoryコレクション内の- itemフィールド値が- pで始まるもの以外のすべてのドキュメントを選択します。- 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