mongodb - MongoDB 是否跟踪每个索引在查询中使用了多少次?

标签 mongodb indexing

我有一个包含 20 多个索引的集合,但我不确定实际上经常使用哪些索引。我怀疑有几个非常大的索引很少使用,但却对写入性能和内存使用产生了负面影响。 mmap 或 WiredTiger 是否保留每个索引用于返回结果的次数的统计信息?

更新:我找到了https://jira.mongodb.org/browse/SERVER-2227这似乎表明这应该存在于版本 3.2+ 中,但找不到任何关于实际查看此计数器的文档。

最佳答案

您可以使用 $indexStats (3.2 版新增):

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

除了其他信息外,它还返回使用索引的操作数(ops 属性)。

{
    "name" : "_id_",
    "key" : { "_id" : 1 },
    "host" : "test-dev:27017",
    "accesses" : {
        "ops" : NumberLong(2),
        "since" : ISODate("2016-04-21T14:15:57.846Z") 
    } 
}

关于mongodb - MongoDB 是否跟踪每个索引在查询中使用了多少次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36771781/

相关文章:

带有 $in 的 mongodb 聚合查询的 Java 代码

javascript - .eq() 乱序

ios - Xcode 8.0 Swift 3.0 索引和构建速度慢

javascript - Mongoose 使用 float 作为键

regex - 在 $group 的 mongodb 聚合框架中使用 $regex

node.js - 如何在 Nodejs 应用程序中首次创建 mongodb 用户

grails - grails可搜索-避免为嵌入式实体建立索引

需要mysql查询INDEX吗?

MySQL 在连接函数时使用索引

java - MongoDb错误: cannot use 'j' option when a host does not have journaling enabled