Docs Menu
Docs Home
/
MongoDB 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

オブジェクト

任意

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

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

  • ビュー定義

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

$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ステージでは、 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クエリで問題が発生している場合は、 Atlas Search エラーのトラブルシューティング を参照してください。

戻る

1. 集計パイプライン ステージの選択