AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。

$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.movies.find( { runtime: { $not: { $gt: 180 } } } )

この例では、次の条件を満たす movies コレクションのすべてのドキュメントを選択します。

  • runtime フィールドの値が 180 以下であるか、または

  • runtimeフィールドが存在しない場合

{ $not: { $gt: 180 } } $lte 演算子とは異なります。{ $lte: 180 } は、runtimeフィールドが存在し、その値が 180 以下のドキュメントのみを返します。

$not 演算子は別の演算子式とともに使用する必要があります。たとえば、$not を使用して非等価性チェックを実行するには、次の構文を使用します。

{ runtime: { $not: { $eq: 120 } } }

上記のクエリは、次のものと同等です。

{ runtime: { $ne: 120 } }

次のクエリは演算子なしでフィールドを比較するため、無効です。

{ runtime: { $not: 120 } }

配列引数が渡されると、$not 演算子は予期しない結果を返す可能性があります。複数の偽条件に基づいてドキュメントを照合するには、$nor を使用します。

このページの例では、sample_mflix データセット のデータを使用しています。自己管理型 MongoDB 配置にこのデータセットをロードする方法の詳細については、「サンプル データセットのロード」を参照してください。サンプル データベースに何らかの変更を加えた場合は、今ページの例を実行するには、データベースを削除して再作成する必要がある可能性があります。

$not演算子は、以下に対して論理NOT演算を実行できます。

  • 正規表現オブジェクト(/pattern/)

    次の例では、runtime が 1000 分より大きく、title が T で始まっていない映画を返します。$not は titleフィールドを含まないドキュメントにも一致するため、タイトル データが利用できない場合でもクエリは映画を返します。

    db.movies.find( { title: { $not: /^T/ }, runtime: { $gt: 1000 } }, { _id: 0, title: 1, runtime: 1 })
  • $regex 演算子式

    次の 2 つのクエリでは、runtime が 1000 分より大きく、title が T で始まっていない映画が返されます。最初のクエリは string を $regex に渡します。

    db.movies.find( { title: { $not: { $regex: "^T" } }, runtime: { $gt: 1000 } }, { _id: 0, title: 1, runtime: 1 })

    2 番目のクエリは、正規表現リテラルを $regex に渡します。

    db.movies.find( { title: { $not: { $regex: /^T/ } }, runtime: { $gt: 1000 } }, { _id: 0, title: 1, runtime: 1 })
  • ドライバー言語の正規表現オブジェクト

    たとえば、次の PyMongo クエリは Python の re.compile() メソッドを使用して正規表現をコンパイルします。

    import refor noMatch in db.inventory.find( { "item": { "$not": re.compile("^p.*") } } ): print noMatch
このページを評価