構文
$searchパイプライン ステージには次のプロトタイプ形式があります。
{ $search: { "index": "<index-name>", "<operator-name>"|"<collector-name>": { <operator-specification>|<collector-specification> }, "highlight": { <highlight-options> }, "concurrent": true | false, "count": { <count-options> }, "searchAfter"|"searchBefore": "<encoded-token>", "scoreDetails": true| false, "sort": { <fields-to-sort>: 1 | -1 }, "returnScope": { "path": "<embedded-documents-field-to-retrieve>" } "returnStoredSource": true | false, "tracking": { <tracking-option> } } }
フィールド
$searchステージは、次のフィールドを持つドキュメントを取得します。
フィールド | タイプ | 必要性 | 説明 |
|---|---|---|---|
| オブジェクト | 条件付き | クエリで使用するコレクターの名前。 このフィールドの値として、コレクター固有のオプションを含むドキュメントを提供できます。 これと |
| ブール値 | 任意 | 専用検索ノードで複数のセグメントにまたがる検索を並列化します。クラスターに個別の検索ノードがない場合、 MongoDB Search はこのフラグを無視します。省略した場合、デフォルトは |
| オブジェクト | 任意 | 結果のカウントを取得するためのカウント オプションを指定するドキュメント。詳しくは、「 MongoDB検索結果のカウント 」を参照してください。 |
| オブジェクト | 任意 | 検索タームを元のコンテキストで表示するための強調表示オプションを指定するドキュメント。 |
| string | 任意 | 使用するMongoDB Searchインデックスの名前。省略した場合、デフォルトは インデックスに MongoDB Search では、インデックス名のスペルをうっかり間違えた場合、または指定されたインデックスがクラスターにまだ存在しない場合は結果が返されません。 |
| オブジェクト | 条件付き | |
| オブジェクト | 任意 | Object that sets the context of the query to the specified embedded document field. You must also specify |
| ブール値 | 条件付き | Flag that specifies whether to perform a full document lookup on the backend database or return only stored source fields directly from MongoDB Search. If omitted, defaults to To learn more, see Return Stored Source Fields. |
| string | 任意 | |
| string | 任意 | |
| ブール値 | 任意 | 結果内のドキュメントのスコアの詳細な内訳を検索するかどうかを指定するフラグ。 省略した場合、デフォルトは |
| オブジェクト | 任意 | MongoDB Search の結果を で昇順または降順でソートするフィールドを指定するドキュメント。日付、数値(整数、浮動小数、double 値)、string 値でソートできます。詳しくは、 MongoDB検索結果の並べ替え を参照してください。 |
| オブジェクト | 任意 |
動作
$searchは、表示されるすべてのパイプラインの最初のステージである必要があります。 $searchは次の場所では使用できません。
集計変数
$searchはクエリの結果のみを返します。 $searchクエリのメタデータ結果は$$SEARCH_META集計変数に保存されます。 $$SEARCH_META変数を使用して、 $searchクエリのメタデータ結果を表示できます。
$$SEARCH_META集計変数は、任意のパイプラインの $search ステージ以降のどこでも使用できますが、任意のパイプラインの $lookup ステージまたは $unionWith ステージ以降では使用できません。$$SEARCH_META集計変数は、$searchMeta ステージ以降のどのステージでも使用できません。
例
sample_mflix.moviesコレクションに次のインデックスがあるとします。
{ "mappings": { "dynamic": false, "fields": { "released": { "type": "date" } } } }
次のクエリは、 $searchステージを使用して、 2011 01 9 月 日前後にリリースされた映画を検索します。 クエリには、次のものが含まれます。
$projectステージでは、titleとreleasedを除くドキュメント内のすべてのフィールドが除外されます。$facetステージは、 を出力します。docs上位の5検索結果の配列を含むフィールドmetaフィールド($$SEARCH_META変数の値を持つもの)
db.movies.aggregate([ { "$search": { "near": { "path": "released", "origin": ISODate("2011-09-01T00:00:00.000+00:00"), "pivot": 7776000000 } } }, { $project: { "_id": 0, "title": 1, "released": 1 } }, { "$limit": 5 }, { "$facet": { "docs": [], "meta": [ {"$replaceWith": "$$SEARCH_META"}, {"$limit": 1} ] } } ])
{ "docs" : [ { "title" : "Submarino", "released" : ISODate("2011-09-01T00:00:00Z") }, { "title" : "Devil's Playground", "released" : ISODate("2011-09-01T00:00:00Z") }, { "title" : "Bag It", "released" : ISODate("2011-09-01T00:00:00Z") }, { "title" : "Dos", "released" : ISODate("2011-09-01T00:00:00Z") }, { "title" : "We Were Here", "released" : ISODate("2011-09-01T00:00:00Z") } ], "meta" : [ { "count" : { "lowerBound" : NumberLong(17373) } } ] }
$$SEARCH_META変数とその使用方法の詳細については、
トラブルシューティング
MongoDB Search クエリで問題が発生している場合は、「$search クエリのトラブルシューティング 」を参照してください。