Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

cursor.explain()

項目一覧

  • 定義
  • 互換性
  • 必要なアクセス権
  • 動作
  • 出力
cursor.explain(verbosity)

重要

mongosh メソッド

このページでは、 mongosh メソッドが文書化されます。これは Node.js などの言語固有のドライバーのドキュメントではありません

MongoDB API ドライバーについては、各言語の MongoDB ドライバー ドキュメントを参照してください。

db.collection.find()メソッドのクエリプランに関する情報を提供します。

explain()メソッドの形式は次のとおりです。

db.collection.find().explain()

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

Parameter
必要性
タイプ
説明

verbose

任意

文字列

explain の出力に含める情報の量を決定します。使用可能な冗長モードは次のとおりです。

  • allPlansExecution

  • executionStats

  • queryPlannerデフォルト

以前のバージョンの explain() との下位互換性のため、 MongoDBは trueallPlansExecution として、falsequeryPlanner として解釈します。

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

explain()メソッドは、クエリプランと、オプションで実行統計を含むドキュメントを返します。

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

  • MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです

注意

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

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

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

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

注意

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

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

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

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

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

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

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

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

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

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

詳しくは db.collection.explain() を参照してください。

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

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

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

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

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

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

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

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

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

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

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

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

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

戻る

cursor.count