AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

db. コレクション.explain()(mongoshメソッド)

MongoDB とドライバー

このページではmongoshメソッドについて説明します。 MongoDBドライバーで同等のメソッドを確認するには、 プログラミング言語の対応するページを参照してください。
db.collection.explain()

次のメソッドのクエリ プランに関する情報を返します。

mapReduce()に関する情報を返します。

を使用するには、前述のメソッドのいずれかをdb.collection.explain() db.collection.explain()に追加します。

db.collection.explain().<method(...)>

たとえば、

db.products.explain().remove( { category: "apparel" }, { justOne: true } )

その他の例については、「」を参照してください。 db.collection.explain().help() も参照してください。

db.collection.explain()メソッドには次のパラメーターがあります。

Parameter
タイプ
説明

verbosity

string

任意。 explain 出力の冗長モードを指定します。 モードは explain() の動作に影響し、返される情報の量を決定します。 使用可能なモードは次のとおりです。

  • "queryPlanner" (デフォルト)

  • "executionStats"

  • "allPlansExecution"

以前のバージョンの cursor.explain() との下位互換性のため、MongoDB は true"allPlansExecution" として、false"queryPlanner" として解釈します。

このモードについて詳しくは、「冗長モード」を参照してください。

注意

db.collection.explain() explainコマンドはデフォルトでallPlansExecutionになりますが、このコマンドはデフォルトでqueryPlannerになります。

このメソッドは、次の環境でホストされている配置で使用できます。

  • MongoDB Atlas はクラウドでの MongoDB 配置のための完全管理サービスです

注意

このコマンドは、すべての MongoDB Atlas クラスターでサポートされています。すべてのコマンドに対する Atlas のサポートについては、「サポートされていないコマンド」を参照してください。

  • MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン

  • MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン

explain を使用するには、基礎のコマンドを実行する権限が必要です。

注意

explainを使用すると、既存のすべてのプラン キャッシュ エントリが無視され、MongoDB クエリ プランナーが新しいプラン キャッシュ エントリを作成できなくなります。

db.collection.explain()の動作と返される情報の量は、verbosity モードによって異なります。

デフォルトでは 、db.collection.explain() は 冗長モードで実行されます。queryPlanner

MongoDB はクエリオプティマイザを実行して、評価中の操作に最適なプランを選択します。db.collection.explain() は評価されたメソッドのqueryPlanner 情報を返します。

MongoDB では、クエリ オプティマイザーが実行され、勝利プランが選択され、勝利プランが完了まで実行され、勝利プランの実行を説明する統計が返されます。

書込み操作の場合、db.collection.explain() は実行されるアップデートまたは削除操作に関する情報を返しますが、変更はデータベースに適用されません。

db.collection.explain()queryPlannerは評価されたメソッドのexecutionStatsexecutionStats 情報を返します。ただし、 では拒否されたプランのクエリ実行情報は提供されません。

また、クエリ オプティマイザーが実行されて最適なプランが選択され、そのプランは完了まで実行されます。"allPlansExecution" モードでは、MongoDBにより、勝利したプランの実行を説明する統計情報と、プランの選択中に取得された他の候補プランの統計情報が返されます。

書込み操作の場合、db.collection.explain() は実行されるアップデートまたは削除操作に関する情報を返しますが、変更はデータベースに適用されません。

db.collection.explain()queryPlannerは評価されたメソッドのexecutionStatsexecutionStats 情報を返します。 には、当選プランの 完了した クエリ実行情報が含まれます。

クエリオプティマイザが複数のプランを考慮した場合、executionStats 情報には、選択された候補プランと拒否された候補プランの両方について、 プラン選択フェーズ中にキャプチャされ た部分的な実行情報も含まれます。

書込み(write)操作の場合、db.collection.explain() は実行される書込み(write)操作に関する情報を返しますが、実際にはデータベースを変更しません。

ステージを含む では、aggregation pipeline $outexplainモードまたはdb.collection.explain() executionStatsallPlansExecutionモードで コマンド/ を実行できません。代わりに、次のいずれかを実行できます。

  • queryPlanner モードで explain を実行するか、

  • executionStats モード、または allPlansExecution モードで、$out ステージなしでexplain を実行すると、$out ステージに先行するステージの情報が返されます。

メソッドはdb.collection.explain() explainコマンドをラップし、explain を実行するための推奨方法です。

db.collection.explain().find()db.collection.find().explain() と似ていますが、次の重要な違いがあります。

db.collection.explain().aggregate()は explain db.collection.aggregate()オプションを メソッドに渡すことと同じです。

db.collection.explain()でサポートされている操作のリストを表示するには、次のコマンドを実行します。

db.collection.explain().help()

db.collection.explain().find()はカーソルを返します。これにより、クエリ修飾子の連鎖が可能になります。 でサポートされているクエリ修飾子とカーソル関連のメソッドのリストを表示するには、次のコマンドを実行します。db.collection.explain().find()

db.collection.explain().find().help()

には複数の修飾子を連鎖させることができます。例については、「 を修飾子で説明するdb.collection.explain().find() find()」を参照してください。

バージョン8.3の新機能。

シャーディングされたクラスターに存在しないデータベースに対して db.collection.explain() を実行すると、実行ステージはストリームの終端に達し、操作データベースは作成されません。ストリームの終端の実行統計の詳細については、explain.executionStats.executionStages.isEOF を参照してください。

db.collection.explain() 操作は、次の情報を返す場合があります。

  • explainVersion、出力形式のバージョン("1" など)。

  • command、説明されているコマンドの詳細が表示されます。

  • queryShapeHash は、MongoDB 8.0 以降、クエリシェイプのハッシュを持つ 16 進数文字列です。詳細については、「クエリシェイプ」「クエリシェイプハッシュ」および explain.queryShapeHash を参照してください。

  • queryPlanner は、クエリオプティマイザによって選択されたプランの詳細を示し、拒否されたプランを一覧で表示します。

  • executionStats、当選したプランと拒否されたプランの実行の詳細が表示されます。

  • serverInfo、MongoDB インスタンスに関する情報を提供します。

  • serverParameters内部パラメータの詳細が表示されます。

冗長モード(つまり、queryPlannerexecutionStatsallPlansExecution)は、結果にexecutionStatsが含まれるかどうか、およびexecutionStatsプラン選択中にキャプチャされたデータが含まれるかどうかを決定します。

Explain の出力は、 BSON ドキュメントの最大ネスト深度(100 レベルのネスト)によって制限されます。制限を超える出力は切り捨てられます。

出力の詳細については explain の結果を参照してください。

デフォルトでは 、db.collection.explain() は 冗長モードで実行されます。"queryPlanner"

db.collection.explain()次の例では、"queryPlanner"count() 冗長モードで実行し、指定された 操作のクエリ計画情報を返します。

db.products.explain().count( { quantity: { $gt: 50 } } )

db.collection.explain()次の例では、"executionStats"find() 冗長モードで実行し、指定された 操作のクエリ計画と実行情報を返します。

db.products.explain("executionStats").find(
{ quantity: { $gt: 50 }, category: "apparel" }
)

db.collection.explain()次の例では、"allPlansExecution" 冗長モードで を実行しています。db.collection.explain() は、指定されたqueryPlanner 操作のすべての検討済みプランのexecutionStatsfindAndModify() と を返します。

注意

この explain を実行してもデータは変更されませんが、アップデート操作のクエリ述語が実行されます。候補プランの場合、MongoDB ではプラン選択フェーズ中に取得された実行情報が返されます。

db.products.explain( "allPlansExecution" ).findAndModify( {
query: { name: "Tom", state: "active", rating: { $gt: 10 } },
sort: { rating: 1 },
update: { $inc: { score: 1 } }
} )

db.collection.explain().find()構造により、クエリ修飾子の連鎖が可能になります。例、次の操作では、find() sort()クエリ修飾子とhint() クエリ修飾子を持つ メソッドに関する情報が提供されます。

db.products.explain("executionStats").find(
{ quantity: { $gt: 50 }, category: "apparel" }
).sort( { quantity: -1 } ).hint( { category: 1, quantity: -1 } )

使用可能なクエリ修飾子のリストについては、mongosh で以下を実行します。

db.collection.explain().find().help()

db.collection.explain().find() explain()の結果を返します。 で対話的に実行する場合は、 メソッドを使用してクエリプランにアクセスできます。mongosh.finish()

db.products.explain().find( { category: "apparel" } ).finish().queryPlanner.winningPlan;