Docs Menu
Docs Home
/
Atlas
/ / / /

$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ステージは、次のフィールドを持つドキュメントを取得します。

フィールド
タイプ
必要性
説明

<collector-name>

オブジェクト

条件付き

クエリで使用するコレクターの名前。 このフィールドの値として、コレクター固有のオプションを含むドキュメントを提供できます。 これと<operator-name>のいずれかが必要です。

concurrent

ブール値

任意

専用検索ノードで複数のセグメントにまたがる検索を並列化します。 クラスターに個別の検索ノードがない場合、Atlas Search はこのフラグを無視します。 省略された場合、デフォルトはfalseとなります。 詳細については、「セグメント間でのクエリ実行の並列化 」を参照してください。

count

オブジェクト

任意

結果のカウントを取得するためのカウントオプションを指定するドキュメント。 詳しくは、「 Atlas Search結果のカウント 」を参照してください。

highlight

オブジェクト

任意

検索タームを元のコンテキストで表示するための強調表示オプションを指定するドキュメント。

index

string

任意

使用する Atlas Search インデックスの名前。 省略した場合、デフォルトはdefaultになります。

インデックスに default と名付けると、$search パイプライン ステージで index パラメーターを指定する必要がありません。インデックスにカスタム名を付ける場合は、index パラメーターで指定する必要があります。

インデックス名のスペルをうっかり間違えた場合、または指定されたインデックスがクラスターにまだ存在しない場合は、Atlas Search では結果が返されません。

<operator-name>

オブジェクト

条件付き

検索する演算子の名前。 このフィールドの値として、演算子固有のオプションを含むドキュメントを提供できます。 これと<collector-name>のいずれかが必要です。 複数の演算子を含む複合クエリを実行するには、複合演算子 を使用します。

returnStoredSource

ブール値

任意

バックエンド データベースでドキュメント全体の検索を実行するか、Atlas Search から直接保存されたソース フィールドのみを返すかを指定するフラグ。 省略した場合、デフォルトはfalseになります。 詳細については、「保存されたソース フィールドの返却 」を参照してください。

searchAfter

string

任意

結果を検索するための基準点。 searchAfterは、指定された参照点の直後から始まるドキュメントを返します。 参照点は、 $metaキーワードsearchSequenceTokenによって生成された base 64でエンコードされたトークンである必要があります。 詳しくは、「結果をページ分割する 」を参照してください。 このフィールドは、 searchBeforeフィールドと相互に排他的です。

searchBefore

string

任意

結果を検索するための基準点。 searchBeforeは、指定された参照点の直前から始まるドキュメントを返します。 参照点は、 $metaキーワードsearchSequenceTokenによって生成された base 64でエンコードされたトークンである必要があります。 詳しくは、「結果をページ分割する 」を参照してください。 このフィールドは、 searchAfterフィールドと相互に排他的です。

scoreDetails

ブール値

任意

結果内のドキュメントのスコアの詳細な内訳を検索するかどうかを指定するフラグ。 省略した場合、デフォルトはfalseになります。 詳細を表示するには、 ステージで $meta $project式を使用する必要があります。詳細については、「スコアの詳細を返す 」を参照してください。

sort

オブジェクト

任意

Atlas Search の結果を昇順または降順でソートするフィールドを指定するドキュメント。 日付、数値(整数、浮動小数、double 値)、string 値でソートできます。 詳しくは、「 Atlas Search結果の並べ替え 」を参照してください。

tracking

オブジェクト

任意

検索タームに関する分析情報を取得するための追跡オプションを指定するドキュメント。

警告: これは廃止予定です。公式のサポート終了および完全なサポートの削除は、2025 年 12 月 5 日に発効します。したがって、この日付以降、|service| は Atlas UI に表示するためのクエリデータを収集せず、この機能の UI は削除されます。ご不明な点や追加のサポートが必要な場合は、サポートまたはアカウント エグゼクティブにお問い合わせください。

$searchは、表示されるすべてのパイプラインの最初のステージである必要があります。 $searchは次の場所では使用できません。

  • ビュー定義

  • $facetパイプライン ステージ

$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ステージでは、 titlereleasedを除くドキュメント内のすべてのフィールドが除外されます。

  • $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 クエリで問題に直面した場合は、「クエリのトラブルシューティング」を参照してください。

戻る

集計パイプライン ステージを選択します

項目一覧