Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

$indexStats(聚合)

在此页面上

  • 定义
  • 行为
  • 例子
$indexStats

返回有关集合的每个索引使用情况的统计信息。 如果使用访问权限控制运行,请以至少具有clusterMonitor角色的用户身份进行身份验证。

$indexStats 阶段采用空文档,其语法如下:

{ $indexStats: { } }

对于每个索引,返回文档包含以下字段:

输出字段
说明

name

索引名称。

索引密钥规范。

另请参阅:spec。

mongod进程的主机名和端口。

有关索引使用的统计信息:

  • ops 是使用索引的操作次数。

  • since 是 MongoDB 收集统计数据的时间。

与分片关联的分片的托管

仅适用于分片群集。

索引的完整规范文档,其中包括索引键和索引属性。

仅当值为 true 时才包含索引选项 hidden

指示索引当前是否正在构建。

仅当 true 时才可用。

accesses 字段报告的统计信息仅应用于正在运行查询的节点,并且仅包括由用户请求驱动的索引访问权限。其中不包括内部操作,例如通过 TTL 索引进行的删除或数据块分割和迁移操作。

  • $indexStats 必须是聚合管道的第一阶段。

  • $indexStats 不允许在事务中使用。

  • 索引的统计数据将在 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" }
] )

在集合上创建以下两个索引:

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' }
}
}
]

后退

$group

在此页面上