$in$in演算子は、フィールドの値が指定された配列内の任意の値と等しいドキュメントを選択します。
互換性
次の環境でホストされる配置には $in を使用できます。
- MongoDB Atlas はクラウドでの MongoDB 配置のための完全管理サービスです
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
構文
$in演算子の形式は次のとおりです。
{ field: { $in: [ <value1>, <value2>, ... <valueN> ] } }
異なる BSON 型値の比較については、BSON 比較順序の指定を参照してください。
fieldに配列がある場合、$in 演算子は、field が指定された配列内の値と一致する要素を少なくとも 1<value1> つ含む配列を持つドキュメントを選択します。例、、、<value2> 、 など。
$inは各パラメータをコレクション内の各ドキュメントと比較するため、パフォーマンスの問題が発生する可能性があります。パフォーマンスを向上させるには、クエリを実行するfield にインデックスを作成します。インデックスを使用すると、 MongoDB は各$in 要素の限界を作成し、より効率的に検索できます。
注意
このドキュメントでは、$in クエリ演算子について説明します。$in 集計演算子については、 $in(式演算子) を参照してください。
Atlas Search を使用した Atlas 上のデータのクエリ
MongoDB Atlasに保存されているデータには、 クエリを実行中中に Atlas Search の in $search演算子 演算子を使用できます。$search$in $searchの後に を実行する方法は、 in 演算子を使用して を実行中よりパフォーマンスが低くなります。
この演算子の Atlas Search バージョンの詳細については、Atlas ドキュメントの in 演算子 を参照してください。
例
例で使用されている 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" ] } ] )
Match Values
このクエリでは、inventory コレクションの quantity フィールドの値が 5 または 15 であるドキュメントを選択します。
db.inventory.find( { quantity: { $in: [ 5, 15 ] } }, { _id: 0 } )
出力:
{ item: 'Erasers', quantity: 15, tags: [ 'school', 'home' ] }, { item: 'Books', quantity: 5, tags: [ 'school', 'storage', 'home' ] }
演算子を使用してクエリを作成できますが、同じフィールドで等価性チェックを実行する場合は、$or $in演算子ではなく$or 演算子を使用します。
配列の値の一致
次の updateMany() 操作では、tags 配列に "home" または "school" のいずれかに一致する要素が少なくとも1つある場合、exclude フィールドが false に設定されます。
db.inventory.updateMany( { tags: { $in: [ "home", "school" ] } }, { $set: { exclude: false } } )
出力例:
{ item: 'Pens', quantity: 350, tags: [ 'school', 'office' ], exclude: false }, { item: 'Erasers', quantity: 15, tags: [ 'school', 'home' ], exclude: false }, { item: 'Books', quantity: 5, tags: [ 'school', 'storage', 'home' ], exclude: false }
配列のクエリに関するその他の例えは、以下を参照してください。
クエリに関するその他の例については、ドキュメントの読み取りを参照してください。
$in を正規表現で使用する
$in演算子は、/pattern/ 形式の正規表現を使用してドキュメントを選択できます。$regex $in内では 式は使用できません。
このクエリでは、tags フィールドが be または st で始まる inventory コレクションのドキュメントを選択します。
db.inventory.find( { tags: { $in: [ /^be/, /^st/ ] } } )
このクエリでは、tags フィールドに be または st で始まる文字列があるか、be または st で始まる要素が少なくとも1つある配列を持つinventory コレクションのすべてのドキュメントを選択します。