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

in 演算子

MongoDB Search の in 演算子は、指定されたパスで BSON number、date、boolean、objectId、uuid、またはstringの値を含む配列を検索し、フィールドの値が指定された配列内のいずれかの値と一致するドキュメントを返します。フィールドが配列を保持している場合、in 演算子は、その配列に指定された配列内のいずれかの値と一致する要素が少なくとも 1 つ含まれているドキュメントを選択します。

in演算子の構文は次のとおりです。

{ $search: { "index": <index name>, // optional, defaults to "default" "in": { "path": "<field-to-search>", "score": <options>, "value": <single-or-array-of-values-to-search>, "doesNotAffect": "<facet-to-exclude>" | [<array-of-facets>] } }}
フィールド
タイプ
説明
必要性

path

文字列または複数の文字列の配列

検索対象となるインデックス付きフィールド。ワイルドカード パスを指定して検索することもできます。

フィールド内の文字列値を検索するには、フィールドをMongoDB Search トークン タイプとしてインデックス必要があります。

必須

score

オブジェクト

一致する検索タームの結果に割り当てる スコア 。 スコアを変更するには、次のいずれかのオプションを使用します。

  • boost: 結果のスコアに指定された数値を掛けます。

  • constant: 結果のスコアを指定された数値に置き換えます。

  • function: 関数式を使用して結果スコアを置き換えます。

任意

value

ブール値、 ObjectId 、数値、日付、 uuid 、またはstring

検索する値。 値は、サポートされているBSON types のいずれか 1 つのみの単一の値または値の配列のいずれかとして、異なるタイプを混在させることはできません。

フィールド内の文字列値を検索するには、フィールドをMongoDB Search トークン タイプとしてインデックス必要があります。

必須

doesNotAffect

文字列または複数の文字列の配列

このクエリに基づいてカウントの再計算から除外するファセットまたはファセットのリスト。値は、$search.facets または $searchMeta.facets で定義されたファセットの 1 つ以上の名前である必要があります。演算子は、指定されたファセットを使用してこのクエリに一致するドキュメントをフィルタリングしますが、それらのカウントを再計算しません。詳細については、「 複数選択ファセット 」を参照してください。

任意

次の例では、in 演算子を使用して、sample_analytics.カスタマー コレクション内のコレクションをクエリします。クラスターにサンプルデータをロードし、コレクションで 静的マッピング を使用する という名前の MongoDB Searchdefault インデックスを 作成 すると、コレクションに対して次のクエリを実行できます。

サンプルのインデックス定義では、コレクション内のインデックス付きフィールドに対するin演算子クエリをサポートするために、次のアクションを指定します。

  • コレクション内のすべての動的にインデックス付け可能なフィールドを自動的にインデックス化します。

  • nameフィールドをトークンタイプとして静的にインデックスし、フィールドのテキストを小文字に変換します。

{ "mappings": { "index": "default", "dynamic": true, "fields": { "name": { "normalizer": "lowercase", "type": "token" } } }}

MongoDB Searchインデックスの作成方法については、 MongoDB Search インデックスの管理 を参照してください。

次のクエリは、 in演算子を使用して、特定の日付に手順を実行したカスタマーを対象に、単一の 値を含むbirthdateフィールドで検索します。 クエリは、 $projectステージを使用して次の操作を実行します。

  • 結果の_idフィールドを省略します。

  • namebirthdate結果には フィールドと フィールドのみが含まれます。

db.customers.aggregate([ { "$search": { "in": { "path": "birthdate", "value": [ISODate("1977-03-02T02:20:31.000+00:00"), ISODate("1977-03-01T00:00:00.000+00:00"), ISODate("1977-05-06T21:57:35.000+00:00")] } } }, { "$project": { "_id": 0, "name": 1, "birthdate": 1 } }])
[ { name: 'Elizabeth Ray', birthdate: ISODate("1977-03-02T02:20:31.000Z") }, { name: 'Brad Cardenas', birthdate: ISODate("1977-05-06T21:57:35.000Z") }]

MongoDB Search は、クエリで指定された日付に一致する 2 つのドキュメントを返します。

次のクエリでは、in 演算子を使用して、ブール値を含む active フィールドでアクティブなカスタマーを検索します。このクエリは、生年月日が次のバケットに該当するアクティブなカスタマーの数を返します。

  • 1970-01-01、このバケットの下限値を含む

  • 1980-01-01、1970-01-01バケットの上限(排他的)とこのバケットの下限(包括的)

  • 1990-01-01、1980-01-01バケットの上限(排他的)とこのバケットの下限(包括的)

  • 2000-01-01、1990-01-01バケットの排他的上限

db.customers.aggregate([ { "$searchMeta": { "facet": { "operator": { "in": { "path": "active", "value": null } }, "facets": { "birthdateFacet": { "type": "date", "path": "birthdate", "boundaries": [ISODate("1970-01-01"), ISODate("1980-01-01"), ISODate("1990-01-01"), ISODate("2000-01-01")], "default": "other" } } } } }])
[ { count: { lowerBound: Long('1') }, facet: { birthdateFacet: { buckets: [ { _id: ISODate('1970-01-01T00:00:00.000Z'), count: Long('1') }, { _id: ISODate('1980-01-01T00:00:00.000Z'), count: Long('0') }, { _id: ISODate('1990-01-01T00:00:00.000Z'), count: Long('0') } ] } } }]