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

$nin(クエリ述語演算子)

$nin

$nin 次の条件を満たすドキュメントを選択します。

  • 指定されたフィールド値が指定された配列にない、または

  • 指定されたフィールが存在しない。

次の環境でホストされる配置には $nin を使用できます。

  • MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
  • MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン

  • MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン

$nin 演算子は次の形式をとります。

{ field: { $nin: [ <value1>, <value2> ... <valueN> ] } }

非等価演算子($gt、$gte、$lt、および $lte)とは異なり、$nin は型ブラケットを使用しません。代わりに、値の型に関係なく、フィールドの値が指定された値のいずれでもないドキュメントと一致します。

例として、{ a: { $nin: [ 2, 4 ] } } は a が string であるドキュメントにも一致します。

field に配列がある場合、$nin 演算子は、field に含まれている配列に、指定された配列内の値と等しい要素がないドキュメントを選択します。例: <value1>、<value2>など。

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

次の例では、 runtime が 1000 分より大きく、rated が [ "G", "PG" ] にない映画を返します。$nin は ratedフィールドを含まないドキュメントにも一致するため、評価データが利用できない場合でもクエリは映画を返します。

db.movies.find( { rated: { $nin: [ "G", "PG" ] }, runtime: { $gt: 1000 } }, { _id: 0, title: 1, year: 1, rated: 1 })

次の例では、genres 配列に "Drama" がない映画の excludeフィールドを true に設定します。

db.movies.updateMany( { genres: { $nin: [ "Drama" ] } }, { $set: { exclude: true } })

updateMany() は、ドキュメントに $nin が一致するフィールドが含まれていない場合にもそのドキュメントを選択します。

非等価演算子$nin は、インデックスの大部分と一致することが多いため、あまり選択的ではありません。その結果、多くの場合、インデックス付きの クエリのパフォーマンスは、コレクション内のすべてのドキュメントをスキャンする必要がある$nin $ninクエリと同程度になることがあります。「 選択性のあるクエリの作成 」も参照してください。

このページを評価