AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

$indexStats(集計ステージ)

$indexStats

コレクションの各インデックスの使用に関する統計を返します。アクセス制御を使用して実行している場合は、少なくとも clusterMonitor ロールを持つユーザーとして認証します。

$indexStatsステージは空のドキュメントを受け取り、次の構文を使用します 。

{ $indexStats: { } }

各インデックスについて、返されるドキュメントには次のフィールドが含まれます。

出力フィールド
説明

name

インデックス名。

インデックスキーの指定。

See also: spec.

mongod プロセスのホスト名とポート。

関連するホストのインデックス使用メトリクス(以下を含む)。

  • ops: インデックスを使用したユーザーの操作数です。TTL インデックスによる削除や、チャンクの分割や移行などの内部操作は含まれません。

  • since: MongoDBが統計情報を収集した時刻です。

警告: accessesフィールドは、クエリが実行されるノードのインデックス使用状況メトリクスのみを報告します。より包括的なインデックス使用状況統計については、クラスター内の各ノードで$indexStats を実行してください。

The name of the shard associated with the host

シャーディングされたクラスターでのみ使用できます。

インデックスの完全な仕様ドキュメントで、インデックス キーとインデックス プロパティが含まれます。

インデックス オプション hidden は、値が true の場合にのみ含まれます。

インデックスが現在構築中かどうかを示します。

trueの場合にのみ使用できます。

The statistics reported by the accesses field only apply to the node where the query is being run and only include index access driven by user requests. It does not include internal operations like deletion via TTL indexes or chunk split and migration operations.

  • mongod の再起動時またはインデックスの削除と再作成時のインデックス リセットの統計。

  • 既存のインデックスを変更すると(collMod コマンドを参照)、そのインデックスの統計がリセットされます。

たとえば、コレクション orders に次のドキュメントが含まれているとします。

db.orders.insertMany( [
{ _id : 1, item : "abc", price : 12, quantity : 2, type: "apparel" },
{ _id : 2, item : "jkl", price : 20, quantity : 1, type: "electronics" },
{ _id : 3, item : "abc", price : 10, quantity : 5, type: "apparel" }
] )

コレクションに次の 2 つのインデックスを作成します。

db.orders.createIndex( { item: 1, quantity: 1 } )
db.orders.createIndex( { type: 1, item: 1 } )
db.orders.createIndex(
{ price: 1 },
{ partialFilterExpression: { type: "apparel" } }
)

コレクションに対していくつかのクエリを実行します。

db.orders.find( { type: "apparel"} )
db.orders.find( { item: "abc" } ).sort( { quantity: 1 } )
db.orders.find( { price: { $gt: 10 } } )

orders コレクションのインデックス使用に関する統計を表示するには、次の集計操作を実行します。

db.orders.aggregate( [ { $indexStats: { } } ] )

この操作では、各インデックスの使用状況統計を含むドキュメントが返されます。

[
{
name: 'type_1_item_1',
key: { type: 1, item: 1 },
host: 'examplehost.local:27018',
accesses: { ops: Long("1"), since: ISODate("2024-05-02T15:07:21.420Z") },
shard: "shardA",
spec: { v: 2, key: { type: 1, item: 1 }, name: 'type_1_item_1' }
},
{
name: 'item_1_quantity_1',
key: { item: 1, quantity: 1 },
host: 'examplehost.local:27018',
accesses: { ops: Long("1"), since: ISODate("2024-05-02T15:07:21.254Z") },
shard: "shardA",
spec: { v: 2, key: { item: 1, quantity: 1 }, name: 'item_1_quantity_1' }
},
{
name: '_id_',
key: { _id: 1 },
host: 'examplehost.local:27018',
accesses: { ops: Long("0"), since: ISODate("2024-05-02T15:07:13.274Z") },
shard: "shardA",
spec: { v: 2, key: { _id: 1 }, name: '_id_' }
},
{
name: 'price_1',
key: { price: 1 },
host: 'examplehost.local:27018',
accesses: { ops: Long("0"), since: ISODate("2024-05-02T15:07:54.847Z") },
shard: "shardA",
spec: {
v: 2,
key: { price: 1 },
name: 'price_1',
partialFilterExpression: { type: 'apparel' }
}
}
]

MongoDB Node.jsドライバーを使用して $indexStats ステージを集計パイプラインに追加するには、パイプラインオブジェクトで $indexStats 演算子を使用します。

次の例では、コレクションの各インデックスの使用状況統計を含むドキュメントを返すパイプラインステージを作成します。次に、この例では集計パイプラインを実行します。

const pipeline = [{ $indexStats: {} }];
const cursor = collection.aggregate(pipeline);
return cursor;
このページを評価

項目一覧