$search$searchステージは、指定されたフィールドに対して全文検索を実行します。 フィールドは Atlas Search インデックスでカバーされている必要があります。
構文
$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 }, "returnStoredSource": true | false, "tracking": { <tracking-option> } } }
フィールド
$searchステージは、次のフィールドを持つドキュメントを取得します。
フィールド | タイプ | 必要性 | 説明 |
|---|---|---|---|
| オブジェクト | 条件付き | クエリで使用するコレクターの名前。 このフィールドの値として、コレクター固有のオプションを含むドキュメントを提供できます。 これと |
| ブール値 | 任意 | 専用検索ノードで複数のセグメントにまたがる検索を並列化します。 クラスターに個別の検索ノードがない場合、Atlas Search はこのフラグを無視します。 省略された場合、デフォルトは |
| オブジェクト | 任意 | 結果のカウントを取得するためのカウントオプションを指定するドキュメント。 詳しくは、「 Atlas Search結果のカウント 」を参照してください。 |
| オブジェクト | 任意 | 検索タームを元のコンテキストで表示するための強調表示オプションを指定するドキュメント。 |
| string | 任意 | 使用する Atlas Search インデックスの名前。 省略した場合、デフォルトは インデックスに インデックス名のスペルをうっかり間違えた場合、または指定されたインデックスがクラスターにまだ存在しない場合は、Atlas Search では結果が返されません。 |
| オブジェクト | 条件付き | |
| ブール値 | 任意 | バックエンド データベースでドキュメント全体の検索を実行するか、Atlas Search から直接保存されたソース フィールドのみを返すかを指定するフラグ。 省略した場合、デフォルトは |
| string | 任意 | |
| string | 任意 | |
| ブール値 | 任意 | 結果内のドキュメントのスコアの詳細な内訳を検索するかどうかを指定するフラグ。 省略した場合、デフォルトは |
| オブジェクト | 任意 | Atlas Search の結果を昇順または降順でソートするフィールドを指定するドキュメント。 日付、数値(整数、浮動小数、double 値)、string 値でソートできます。 詳しくは、「 Atlas Search結果の並べ替え 」を参照してください。 |
| オブジェクト | 任意 |
動作
$searchは、表示されるすべてのパイプラインの最初のステージである必要があります。 $searchは次の場所では使用できません。
集計変数
$searchはクエリの結果のみを返します。 $searchクエリのメタデータ結果は$$SEARCH_META集計変数に保存されます。 $$SEARCH_META変数を使用して、 $searchクエリのメタデータ結果を表示できます。
The $$SEARCH_META aggregation variable can be used anywhere after a $search stage in any pipeline, but it can't be used after the $lookup or $unionWith stage in any pipeline. The $$SEARCH_META aggregation variable can't be used in any subsequent stage after a $searchMeta stage.
例
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変数とその使用方法の詳細については、
トラブルシューティング
Atlas Search の $search クエリで問題に直面した場合は、「クエリのトラブルシューティング」を参照してください。