インデックス のアクセス情報の取得 $indexStats
コレクションの各インデックスの使用に関する統計を取得するには、 $indexStats 集計ステージを使用します。たとえば、次の集計操作は、orders コレクションのインデックス使用に関する統計を返します。
db.orders.aggregate( [ { $indexStats: { } } ] )
Tip
クエリプランを返す explain()
使用されたインデックス、スキャンされたドキュメントの数、クエリの処理にかかる時間(ミリ秒単位)など、クエリ プロセスに関する統計を返すには、executionStats モードで db.collection.explain() メソッドまたは cursor.explain() メソッドを使用します。
プラン選択中に収集された部分的な実行統計を表示するには、allPlansExecution モードで db.collection.explain() メソッドまたは cursor.explain() メソッドを実行します。
Tip
インデックスの使用の制御 hint()
MongoDB が db.collection.find() 操作に特定のインデックスを使用するよう強制するには、hint() メソッドでインデックスを指定します。hint() メソッドを find() メソッドに追加します。次の例で考えてみます。
db.people.find( { name: "John Doe", zipcode: { $gt: "63000" } } ).hint( { zipcode: 1 } )
特定のインデックスの実行統計を表示するには、db.collection.find() に hint() メソッドを追加し、その後に cursor.explain() を追加します。例:
db.people.find( { name: "John Doe", zipcode: { $gt: "63000" } } ).hint( { zipcode: 1 } ).explain("executionStats")
または、hint() メソッドを db.collection.explain().find() に追加します。
db.people.explain("executionStats").find( { name: "John Doe", zipcode: { $gt: "63000" } } ).hint( { zipcode: 1 } )
MongoDB がインデックスを使用しないようにするには、$natural 演算子を hint() メソッドに指定します。
db.people.find( { name: "John Doe", zipcode: { $gt: "63000" } } ).hint( { $natural: 1 } )
インデックス メトリクス
$indexStats 集計ステージに加えて、MongoDB は、データベースのインデックスの使用を分析する際に考慮する必要があるさまざまなインデックス統計を提供します。