$nin
$nin
$nin
下記に該当するドキュメントを選択します。指定されたフィールド値が指定された配列にない、または
指定されたフィールが存在しない。
互換性
次の環境でホストされる配置には $nin
を使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
構文
$nin
演算子は次の形式をとります。
{ field: { $nin: [ <value1>, <value2> ... <valueN> ] } }
field
に配列が含まれている場合、$nin
演算子は、フィールドに含まれている配列に、field
に指定された配列内の値と等しい要素がないドキュメントを選択します(例: <value1>
、<value2>
など)。
異なる BSON 型値の比較については、BSON 比較順序の指定を参照してください。
例
inventory
コレクションを次のように作成します。
db.inventory.insertMany( [ { "item": "Pens", "quantity": 350, "tags": [ "school", "office" ] }, { "item": "Erasers", "quantity": 15, "tags": [ "school", "home" ] }, { "item": "Maps", "tags": [ "office", "storage" ] }, { "item": "Books", "quantity": 5, "tags": [ "school", "storage", "home" ] } ] )
不一致ドキュメントを選択
次のクエリは、inventory
コレクションから quantity
が 5 でも 15 でもないすべてのドキュメントを選択します。
このクエリはまた、 quantity
フィールドを持たないドキュメントにも一致します。
db.inventory.find( { quantity: { $nin: [ 5, 15 ] } }, { _id: 0 } )
出力例:
{ item: 'Pens', quantity: 350, tags: [ 'school', 'office' ] }, { item: 'Maps', tags: [ 'office', 'storage' ] }
配列にない要素を選択する
"school"
タグがないドキュメントについて、exclude
フィールドをtrue
に設定します。
db.inventory.updateMany( { tags: { $nin: [ "school" ] } }, { $set: { exclude: true } } )
updateMany()
は、ドキュメントに $nin
が一致するフィールドが含まれていない場合にもそのドキュメントを選択します。
非等価演算子 $nin
の選択性は、インデックスの大部分と一致することが多いため、あまり高くありません。そのため、多くの場合、インデックスを持つ $nin
クエリのパフォーマンスは、コレクション内のすべてのドキュメントをスキャンする必要がある $nin
クエリと同程度になることがあります。詳しくは、「クエリの選択性」も参照してください。