定義
cursor.explain(verbosity)重要
mongosh メソッド
このページでは メソッドについて説明します。これはNode.jsなどの言語固有のドライバーのドキュメントではありません
mongosh。MongoDB API ドライバーについては、各言語の「MongoDB ドライバーのドキュメント」を参照してください。
db.collection.find()メソッドのクエリプランに関する情報を提供します。explain()メソッドの形式は次のとおりです。db.collection.find().explain() explain()メソッドには次のパラメーターがあります。Parameter必要性タイプ説明verbose任意
文字列
explain の出力に含める情報の量を決定します。 使用可能な冗長モードは次のとおりです。
allPlansExecutionexecutionStatsqueryPlanner(デフォルト)
以前のバージョンの
explain()との下位互換性のため、 MongoDB はtrueをallPlansExecutionとして、falseをqueryPlannerとして解釈します。このモードについて詳しくは、「冗長モード」を参照してください。
explain()メソッドは、クエリプランと、オプションで実行統計を含むドキュメントを返します。
注意
cursor.explain() explainコマンドはデフォルトでallPlansExecutionになりますが、このコマンドはデフォルトでqueryPlannerになります。
互換性
このメソッドは、次の環境でホストされている配置で使用できます。
- MongoDB Atlas はクラウドでの MongoDB 配置のための完全管理サービスです
注意
このコマンドは、すべての MongoDB Atlas クラスターでサポートされています。すべてのコマンドに対する Atlas のサポートについては、「サポートされていないコマンド」を参照してください。
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の MongoDB のバージョン
必要なアクセス権
explain を使用するには、基礎のコマンドを実行する権限が必要です。
動作
注意
explainを使用すると、既存のすべてのプラン キャッシュ エントリが無視され、MongoDB クエリ プランナーが新しいプラン キャッシュ エントリを作成できなくなります。
冗長モード
cursor.explain()の動作と返される情報の量は、verbosity モードによって異なります。
queryPlanner モード
デフォルトでは 、cursor.explain() は 冗長モードで実行されます。queryPlanner
MongoDB はクエリオプティマイザを実行して、評価中の操作に最適なプランを選択します。cursor.explain() は評価されたメソッドのqueryPlanner 情報を返します。
executionStats モード
MongoDB では、クエリ オプティマイザーが実行され、勝利プランが選択され、勝利プランが完了まで実行され、勝利プランの実行を説明する統計が返されます。
cursor.explain()queryPlannerは評価されたメソッドのexecutionStats とexecutionStats 情報を返します。ただし、 では拒否されたプランのクエリ実行情報は提供されません。
allPlansExecution モード
また、クエリ オプティマイザーが実行されて最適なプランが選択され、そのプランは完了まで実行されます。"allPlansExecution" モードでは、MongoDBにより、勝利したプランの実行を説明する統計情報と、プランの選択中に取得された他の候補プランの統計情報が返されます。
cursor.explain()queryPlannerは評価されたメソッドのexecutionStats とexecutionStats 情報を返します。 には、当選プランの 完了した クエリ実行情報が含まれます。
クエリオプティマイザが複数のプランを考慮した場合、executionStats 情報には、選択された候補プランと拒否された候補プランの両方について、 プラン選択フェーズ中にキャプチャされ た部分的な実行情報も含まれます。
db.collection.explain().find()
db.collection.explain().find()はdb.collection.find().explain() と似ていますが、次の重要な違いがあります。
db.collection.explain().find()構造により、クエリ修飾子の追加の連鎖が可能になります。Fクエリ修飾子のリストについては、db.collection.explain().find().help() を参照してください。db.collection.find().explain()は、クエリプランに関するexplain()情報を返します。
詳しくは db.collection.explain() を参照してください。
シャーディングされたクラスター
バージョン8.3の新機能。
シャーディングされたクラスターに存在しないデータベースに対して cursor.explain() を実行すると、実行ステージはストリームの終端に達し、操作データベースは作成されません。ストリームの終端の実行統計の詳細については、explain.executionStats.executionStages.isEOF を参照してください。
出力
cursor.explain() 操作は、次の情報を返す場合があります。
explainVersion、出力形式のバージョン("1"など)。command、説明されているコマンドの詳細が表示されます。queryShapeHashは、MongoDB 8.0 以降、クエリシェイプのハッシュを持つ 16 進数文字列です。詳細については、「クエリシェイプ」「クエリシェイプハッシュ」およびexplain.queryShapeHashを参照してください。queryPlannerは、クエリオプティマイザによって選択されたプランの詳細を示し、拒否されたプランを一覧で表示します。executionStats、当選したプランと拒否されたプランの実行の詳細が表示されます。serverInfo、MongoDB インスタンスに関する情報を提供します。serverParameters内部パラメータの詳細が表示されます。
冗長モード(つまり、queryPlanner 、 executionStats 、 allPlansExecution)は、結果にexecutionStatsが含まれるかどうか、およびexecutionStatsにプラン選択中にキャプチャされたデータが含まれるかどうかを決定します。
Explain の出力は、 BSON ドキュメントの最大ネスト深度(100 レベルのネスト)によって制限されます。制限を超える出力は切り捨てられます。
出力の詳細については explain の結果を参照してください。
例
cursor.explain()次の例では"executionStats" db.collection.find()で を実行します。指定された 操作のクエリ計画と実行情報を返す冗長モード:
db.products.find( { quantity: { $gt: 50 }, category: "apparel" } ).explain("executionStats")