Docs Menu
Docs Home
/ /

$in

$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 は各パラメータをコレクション内の各ドキュメントと比較するため、パフォーマンスの問題が発生する可能性があります。パフォーマンスを向上させるには:

  • に渡すパラメータの数を数十個に制限します。 $inに渡されるパラメータの数を数十個に制限します。数百のパラメータを使用すると、クエリのパフォーマンスに悪影響を与える可能性があります。

  • クエリを実行したい field にインデックスを作成します。

注意

このドキュメントでは、$inクエリ演算子について説明します。$in集計演算子については、$in(式演算子) を参照してください。

MongoDB Atlas に保存されているデータには、Atlas Searchin Operator 演算子を $search クエリを実行中に使用できます。$in$searchの後に実行する場合、$search in Operator 演算子を使用して実行するよりもパフォーマンスが低下します。

この演算子の 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" ] }
] )

このクエリは、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演算子は、/pattern/ のような正規式を使ってドキュメントを選択することができます。を使用することはできません。 $regex $in式は使用できません。

このクエリは、 tagsフィールドがbeまたはstで始まるinventoryコレクション内のドキュメントを選択します。

db.inventory.find( { tags: { $in: [ /^be/, /^st/ ] } } )

このクエリは、inventory コレクション内のすべてのドキュメントを選択します。選択条件は、tags フィールドが be または st で始まる文字列、もしくは be または st で始まる要素が少なくとも1つ含まれる配列であることです。

戻る

$gte

項目一覧