定義
$indexStatsコレクションの各インデックスの使用に関する統計を返します。アクセス制御を使用して実行している場合は、少なくとも
clusterMonitorロールを持つユーザーとして認証します。$indexStatsステージは空のドキュメントを受け取り、次の構文を使用します。{ $indexStats: { } }各インデックスについて、返されるドキュメントには次のフィールドが含まれます。
出力フィールド説明nameインデックス名。
インデックスキーの指定。
mongodプロセスのホスト名とポート。関連するホストのインデックス使用状況メトリクスには、以下が含まれます。
ops:インデックスを使用したユーザー操作の数。この値は、TTL インデックスによる削除や、チャンクの分裂と移行操作などの内部操作を除外します。この除外では、 oplogアプリケーションや最初の同期中のインデックスの構築など、レプリケーションからのインデックスアクセスも対象となります。since: MongoDBが統計情報を収集した時刻です。
警告:
accessesフィールドは、クエリが実行されているノードのみのインデックス使用状況メトリクスを報告します。より包括的なインデックス使用統計を取得するには、クラスターの各ノードで$indexStatsを実行します。ホストに関連付けられているシャードの名前
シャーディングされたクラスターでのみ使用できます。
インデックスの完全な仕様ドキュメントで、インデックス キーとインデックス プロパティが含まれます。
インデックス オプション
hiddenは、値がtrueの場合にのみ含まれます。インデックスが現在構築中かどうかを示します。
trueの場合にのみ使用できます。
動作
アクセス フィールド
アクセスフィールドによって報告される統計は、クエリが実行されているノードにのみ適用され、ユーザーのリクエストによって決定されたインデックスアクセスのみを含みます。accesses フィールドは次の内部操作を除外します。
TTL インデックスによる削除
チャンクの分裂と移行操作
レプリケーションからのインデックス アクセス( oplogアプリケーションや最初の同期中のインデックスビルドなど)
制限事項
$indexStatsは、集計パイプラインの最初のステージである必要があります。$indexStatsトランザクションでは許可されていません。
インデックス統計のリセットに関する考慮事項
例
以下の例では、sample_mflix サンプル データセットの movies コレクションを使用します。このデータセットを配置にロードする方法について詳しくは、「サンプル データセットのロード」を参照してください。
moviesコレクションに次のインデックスを作成します。
db.movies.createIndex( { year: 1, title: 1 } )db.movies.createIndex( { rated: 1, year: 1 } )db.movies.createIndex( { metacritic: 1 }, { partialFilterExpression: { rated: "R" } })コレクションに対していくつかのクエリを実行します。
db.movies.find( { rated: "R" } )db.movies.find( { year: 1994 } ).sort( { title: 1 } )db.movies.find( { metacritic: { $gt: 90 } } )次の集計操作では、moviesコレクションの各インデックスの使用状況統計を含むドキュメントが返されます。
db.movies.aggregate( [ { $indexStats: { } } ] )[ { name: 'year_1_title_1', key: { year: 1, title: 1 }, host: ..., accesses: ..., spec: { v: 2, key: { year: 1, title: 1 }, name: 'year_1_title_1' } }, { name: 'rated_1_year_1', key: { rated: 1, year: 1 }, host: ..., accesses: ..., spec: { v: 2, key: { rated: 1, year: 1 }, name: 'rated_1_year_1' } }, { name: 'metacritic_1', key: { metacritic: 1 }, host: ..., accesses: ..., spec: { v: 2, key: { metacritic: 1 }, name: 'metacritic_1', partialFilterExpression: { rated: 'R' } } }, { name: '_id_', key: { _id: 1 }, host: ..., accesses: ..., spec: { v: 2, key: { _id: 1 }, name: '_id_' } }, { name: 'cast_text_fullplot_text_genres_text_title_text', key: { _fts: 'text', _ftsx: 1 }, host: ..., accesses: ..., spec: ... }]MongoDB Node.jsドライバーを使用して $indexStats ステージを集計パイプラインに追加するには、パイプラインオブジェクトで $indexStats 演算子を使用します。
次の例では、コレクションの各インデックスの使用状況統計を含むドキュメントを返すパイプラインステージを作成します。次に、この例では集計パイプラインを実行します。
const pipeline = [{ $indexStats: {} }];
const cursor = collection.aggregate(pipeline);return cursor;