Docs Menu
Docs Home
/
MongoDBマニュアル
/ / / /

$not

項目一覧

  • 定義
  • 互換性
  • 構文
  • 動作
$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 } では、 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

Tip

以下も参照してください。

戻る

$and