Docs Menu
Docs Home
/ /

$search

$search

$search ステージは、指定されたフィールドに対して全文検索を実行します。フィールドはMongoDB 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
},
"returnScope": {
"path": "<embedded-documents-field-to-retrieve>"
}
"returnStoredSource": true | false,
"tracking": {
<tracking-option>
}
}
}

$searchステージは、次のフィールドを持つドキュメントを取得します。

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

<collector-name>

オブジェクト

条件付き

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

concurrent

ブール値

任意

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

count

オブジェクト

任意

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

highlight

オブジェクト

任意

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

index

string

任意

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

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

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

<operator-name>

オブジェクト

条件付き

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

returnScope

オブジェクト

任意

Object that sets the context of the query to the specified embedded document field. You must also specify returnStoredSource and set it to true.

returnStoredSource

ブール値

条件付き

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 false. Must be true if you specify returnScope.

To learn more, see Return Stored Source Fields.

searchAfter

string

任意

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

searchBefore

string

任意

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

scoreDetails

ブール値

任意

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

sort

オブジェクト

任意

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

tracking

オブジェクト

任意

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

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

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

  • ビュー定義

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

$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ステージでは、 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変数とその使用方法の詳細については、

MongoDB Search クエリで問題が発生している場合は、「$search クエリのトラブルシューティング 」を参照してください。

戻る

パイプライン ステージ

項目一覧