$search
$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
クエリのメタデータ結果を表示できます。
$$SEARCH_META
集計変数は、任意のパイプラインの$search
ステージ以降のどこでも使用できますが、任意のパイプラインの$lookup
} ステージまたは$unionWith
ステージ以降では使用できません。 MongoDB 6以降。 0 、 $$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
変数とその使用方法の詳細については、
トラブルシューティング
Atlas Search $search
クエリで問題が発生している場合は、 Atlas Search エラーのトラブルシューティング を参照してください。