Docs Menu
Docs Home
/
MongoDB Atlas
/ /

クエリプランと実行統計の取得

項目一覧

  • 構文
  • 冗長
  • 応答を説明する
  • 制限
  • queryPlanner
  • executionStats

Atlas Search クエリは、クエリがexplainメソッドで実行された場合、 $searchクエリプランと実行統計に関する情報を返します。 explainを使用してクエリを実行すると、Atlas Search はクエリがどのように実行されたかに関する情報を含む BSONドキュメントを返します。

Tip

以下も参照してください。

explain コマンド

db.<myCollection>.explain("<verbosity>").aggregate([
{
$search: {
"<operator>": {
"<operator-options>"
}
}
}
])

冗長モードは、 explainの動作と返される情報の量を制御します。 値は次のいずれかになります。

queryPlanner (デフォルト)

クエリプランに関する情報。 クエリの実行統計を含むstatsフィールドは含まれません。

クエリの実行統計が含まれるstatsフィールドを含むクエリプランに関する情報。

クエリの実行統計が含まれるstatsフィールドを含むクエリプランに関する情報。

Tip

以下も参照してください。

explain応答は、クエリの実行統計を説明するキーと値を含むBSONドキュメントです。 結果セット内のexplainドキュメントには、次のフィールドが含まれています。

オプション
タイプ
必要性
目的

path

string

任意

演算子へのパス(ルートでない場合のみ)。

type

string

必須

Atlas Search 演算子が作成した Lucene クエリの名前。 詳細については、「 Lucene クエリ構造の概要」を参照してください。

analyzer

string

任意

クエリで使用される Atlas Searchアナライザ

args

ドキュメント

必須

Lucene クエリ情報。 詳細については、「 Lucene クエリ構造の概要」を参照してください。

stats

ドキュメント

任意

explainexecutionStatsまたはallPlansExecutionの冗長度で実行された場合のクエリのタイミングの内訳を説明します。

explainを使用してファセットクエリを実行することはできません。

次の例えでは、sample_mflix データベースの movies コレクションを使用します。

Tip

サンプル データセットをすでに読み込んでいる場合は、「Atlas Search スタートガイド」チュートリアルに従って、インデックスの定義を作成し、Atlas Search クエリを実行します。

次の例では、テキスト演算子を使用して、 queryPlanner冗長モードでtitleフィールドをクエリします。

db.movies.explain("queryPlanner").aggregate([
{
$search: {
"text": {
"path": "title",
"query": "yark",
"fuzzy": {
"maxEdits": 1,
"maxExpansions": 100,
}
}
}
}
])

クエリは、次の結果を返します。 explain応答要素の詳細については、「応答の説明 」を参照してください。

{
"stages" : [
{
"$_internalSearchMongotRemote" : {
"mongotQuery" : {
"text" : {
"path" : "title",
"query" : "yark",
"fuzzy" : {
"maxEdits" : 1,
"maxExpansions" : 100
}
}
},
"explain" : {
"type" : "BooleanQuery",
"args" : {
"must" : [ ],
"mustNot" : [ ],
"should" : [
{
"type" : "BoostQuery",
"args" : {
"query" : {
"type" : "TermQuery",
"args" : {
"path" : "title",
"value" : "ark"
}
},
"boost" : 0.6666666269302368
}
},
{
"type" : "BoostQuery",
"args" : {
"query" : {
"type" : "TermQuery",
"args" : {
"path" : "title",
"value" : "yard"
}
},
"boost" : 0.75
}
},
{
"type" : "BoostQuery",
"args" : {
"query" : {
"type" : "TermQuery",
"args" : {
"path" : "title",
"value" : "mark"
}
},
"boost" : 0.75
}
},
{
"type" : "BoostQuery",
"args" : {
"query" : {
"type" : "TermQuery",
"args" : {
"path" : "title",
"value" : "park"
}
},
"boost" : 0.75
}
},
{
"type" : "BoostQuery",
"args" : {
"query" : {
"type" : "TermQuery",
"args" : {
"path" : "title",
"value" : "dark"
}
},
"boost" : 0.75
}
},
{
"type" : "BoostQuery",
"args" : {
"query" : {
"type" : "TermQuery",
"args" : {
"path" : "title",
"value" : "york"
}
},
"boost" : 0.75
}
}
],
"filter" : [ ],
"minimumShouldMatch" : 0
}
}
}
},
{
"$_internalSearchIdLookup" : { }
}
],
"serverInfo" : {
"host" : "atlas-example-shard-00-01.mongodb.net",
"port" : 27017,
"version" : "4.4.3",
"gitVersion" : "913d6b62acfbb344dde1b116f4161360acd8fd13"
},
"ok" : 1,
"$clusterTime" : {
"clusterTime" : Timestamp(1612457287, 1),
"signature" : {
"hash" : BinData(0,"kzn7hY7NOduVIqcfx+40ENKbMKQ="),
"keyId" : NumberLong("1234567890123456789")
}
},
"operationTime" : Timestamp(1612457287, 1)
}

パイプラインで$limitステージを指定するクエリの場合、 explainの結果にはmongotDocsRequestedメトリクスが含まれます。これは、 mongodmongotからリクエストしたドキュメントの数を示します。

{
"mongotQuery": {},
"explain": {},
"limit": <int>,
"sortSpec": {},
"mongotDocsRequested": <int>,
}

次の例では、オートコンプリート演算子を使用して、 executionStats冗長モードでtitleフィールドをクエリします。

db.movies.explain("executionStats").aggregate([
{
"$search": {
"autocomplete": {
"path": "title",
"query": "pre",
"fuzzy": {
"maxEdits": 1,
"prefixLength": 1,
"maxExpansions": 256
}
}
}
}
])

クエリは、次の結果を返します。 explain応答要素の詳細については、「応答の説明 」を参照してください。

{
"stages" : [
{
"$_internalSearchMongotRemote" : {
"mongotQuery" : {
"autocomplete" : {
"path" : "title",
"query" : "pre",
"fuzzy" : {
"maxEdits" : 1,
"prefixLength" : 1,
"maxExpansions" : 256
}
}
},
"explain" : {
"type" : "MultiTermQueryConstantScoreWrapper",
"args" : {
"queries" : [
{
"type" : "DefaultQuery",
"args" : {
"queryType" : "AutomatonQuery"
},
"stats" : {
"context" : {
"millisElapsed" : NumberDouble(0)
},
"match" : {
"millisElapsed" : NumberDouble(0)
},
"score" : {
"millisElapsed" : NumberDouble(0)
}
}
}
]
},
"stats" : {
"context" : {
"millisElapsed" : NumberDouble(0.816418),
"invocationCounts" : {
"createWeight" : NumberLong(1),
"createScorer" : NumberLong(2)
}
},
"match" : {
"millisElapsed" : NumberDouble(3.849778),
"invocationCounts" : {
"nextDoc" : NumberLong(656)
}
},
"score" : {
"millisElapsed" : NumberDouble(0.035349),
"invocationCounts" : {
"score" : NumberLong(655)
}
}
}
}
},
"nReturned" : NumberLong(0),
"executionTimeMillisEstimate" : NumberLong(20)
},
{
"$_internalSearchIdLookup" : { },
"nReturned" : NumberLong(0),
"executionTimeMillisEstimate" : NumberLong(20)
}
],
"serverInfo" : {
"host" : "atlas-example-shard-00-01.mongodb.net",
"port" : 27017,
"version" : "4.4.3",
"gitVersion" : "913d6b62acfbb344dde1b116f4161360acd8fd13"
},
"ok" : 1,
"$clusterTime" : {
"clusterTime" : Timestamp(1612454116, 1),
"signature" : {
"hash" : BinData(0,"OY+SMPmdK//g6rFZkvSCQr3c3hM="),
"keyId" : NumberLong("1234567890123456789")
}
},
"operationTime" : Timestamp(1612454116, 1)
}