定義
cursor.explain(verbosity)重要
mongosh メソッド
これは
mongoshメソッドです。 これは、Node.jsまたはその他のプログラミング言語固有のドライバー メソッドのドキュメントではありません。ほとんどの場合、
mongoshメソッドはレガシーのmongoshell メソッドと同じように動作します。 ただし、一部のレガシー メソッドはmongoshでは利用できません。レガシー
mongoshell のドキュメントについては、対応する MongoDB Server リリースのドキュメントを参照してください。MongoDB API ドライバーについては、各言語のMongoDB ドライバードキュメント を参照してください。
db.collection.find()メソッドのクエリプランに関する情報を提供します。explain()メソッドの形式は次のとおりです。db.collection.find().explain() explain()メソッドには次のパラメーターがあります。Parameter必要性タイプ説明verbose任意
文字列
explain の出力に含める情報の量を決定します。 使用可能な冗長モードは次のとおりです。
allPlansExecutionexecutionStatsqueryPlanner(デフォルト)
以前のバージョンの
explain()との下位互換性のため、 MongoDB はtrueをallPlansExecutionとして、falseをqueryPlannerとして解釈します。このモードについて詳しくは、「 冗長モード 」を参照してください。
explain()メソッドは、クエリプランと、オプションで実行統計を含むドキュメントを返します。
互換性
このメソッドは、次の環境でホストされている配置で使用できます。
MongoDB Atlas はクラウドでの MongoDB 配置のためのフルマネージド サービスです
注意
このコマンドは、すべての MongoDB Atlas クラスターでサポートされています。すべてのコマンドに対する Atlas のサポートについては、「サポートされていないコマンド」を参照してください。
MongoDB Enterprise: サブスクリプションベースの自己管理型 MongoDB バージョン
MongoDB Community: ソースが利用可能で、無料で使用できる自己管理型の 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().next()またはそのエイリアス.finish()を呼び出す必要があります。mongoshで対話的に実行すると、mongoshは自動的に.finish()を呼び出し、結果を返します。 ただし、スクリプトの場合、結果を返すためには.next()または.finish()を明示的に呼び出す必要があります。 カーソル関連のメソッドのリストについては、 db.collection.explain().find().help(). を参照してください。
詳しくは db.collection.explain() を参照してください。
出力
cursor.explain() 操作は、次の情報を返す場合があります。
explainVersion、出力形式のバージョン(例:"1")command、説明されているコマンドの詳細が表示されます。queryPlannerは、クエリオプティマイザによって選択されたプランの詳細を示し、拒否されたプランを一覧で表示します。executionStats、当選したプランと拒否されたプランの実行の詳細が表示されますserverInfo、MongoDB インスタンスに関する情報を提供しますおよびserverParameters内部パラメータの詳細が表示されます。
冗長モード(つまり、queryPlanner 、 executionStats 、 allPlansExecution)は、結果にexecutionStatsが含まれるかどうか、およびexecutionStatsにプラン選択中にキャプチャされたデータが含まれるかどうかを決定します。
出力の詳細については explain の結果を参照してください。
例
次の例では、 cursor.explain()を"executionStats"冗長モードで実行し、指定されたdb.collection.find()操作のクエリ計画と実行情報を返します。
db.products.find( { quantity: { $gt: 50 }, category: "apparel" } ).explain("executionStats")