$indexStats (aggregation)
Definition
New in version 3.2.
Returns statistics regarding the use of each index for thecollection. If running with access control, the user must have privileges that includeindexStats
action.
The $indexStats
stage takes an empty document and hasthe following syntax:
- { $indexStats: { } }
The return document includes the following fields:
Output FieldDescriptionname
Index name.key
Index key specification.host
The hostname and port of the mongod
process.accesses
Statistics on the index use:
ops
is the number of operations that used theindex.since
is the time from which MongoDB gathered thestatistics.
Statistics for an index will be reset on mongod
restartor index drop and recreation.
Note
Prior to version 3.2.3, the ops
field value did not include$match
or mapReduce
operations that use indexes.
Behavior
The statistics reported by the accesses
field only includes indexaccess driven by user requests. It does not include internal operations likedeletion via TTL Indexes or chunk split and migration operations.
$indexStats
must be the first stage in an aggregation pipeline.
$indexStats
is not allowed in transactions.
Example
For example, a collection orders
contains the following documents:
- { "_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" }
Create the following two indexes on the collection:
- db.orders.createIndex( { item: 1, quantity: 1 } )
- db.orders.createIndex( { type: 1, item: 1 } )
Run some queries against the collection:
- db.orders.find( { type: "apparel"} )
- db.orders.find( { item: "abc" } ).sort( { quantity: 1 } )
To view statistics on the index use on the orders
collection,run the following aggregation operation:
- db.orders.aggregate( [ { $indexStats: { } } ] )
The operation returns a document that contains usage statistics foreach index:
- {
- "name" : "item_1_quantity_1",
- "key" : {
- "item" : 1,
- "quantity" : 1
- },
- "host" : "examplehost.local:27017",
- "accesses" : {
- "ops" : NumberLong(1),
- "since" : ISODate("2015-10-02T14:31:53.685Z")
- }
- }
- {
- "name" : "_id_",
- "key" : {
- "_id" : 1
- },
- "host" : "examplehost.local:27017",
- "accesses" : {
- "ops" : NumberLong(0),
- "since" : ISODate("2015-10-02T14:31:32.479Z")
- }
- }
- {
- "name" : "type_1_item_1",
- "key" : {
- "type" : 1,
- "item" : 1
- },
- "host" : "examplehost.local:27017",
- "accesses" : {
- "ops" : NumberLong(1),
- "since" : ISODate("2015-10-02T14:31:58.321Z")
- }
- }