【问题标题】:MongoDB TTL Index is removing documents but usage is not updatedMongoDB TTL 索引正在删除文档,但未更新使用情况
【发布时间】:2018-12-21 16:22:35
【问题描述】:

我在 Timestamp 属性上建立了 TTL 索引,这是一个非常直接的索引。我已经使用 MongoDb .Net Driver V 2.7.2 在我的 mongo 上下文构造函数中创建了索引。 它正在按预期从给定集合中删除文档,但 MongoDBCompass 社区以及当我通过 Mongo 终端检查它时,“使用”没有更新。

<code>
Here is the out put running $indexStat:

MongoDB Enterprise > db.testCollection.aggregate( [ { $indexStats: { } } ] ).pretty()
{
        "name" : "_id_",
        "key" : {
                "_id" : 1
        },
        "host" : "****:27017",
        "accesses" : {
                "ops" : NumberLong(15),
                "since" : ISODate("2018-12-20T22:52:01.132Z")
        }
}
{
        "name" : "****TTLIndex",
        "key" : {
                "Timestamp" : -1
        },
        "host" : "****:27017",
        "accesses" : {
                "**ops" : NumberLong(0),**  <----- This is zero
                "since" : ISODate("2018-12-20T22:52:01.132Z")
        }
}
</code>

什么可能导致使用不更新?其他集合上的其他 TTL 索引工作正常吗?

编辑 我期待看到这样的东西

【问题讨论】:

    标签: c# mongodb mongodb-.net-driver mongodb-compass


    【解决方案1】:

    $indexStats 中的accesses 值仅在用户请求驱动的索引访问时递增。这不包括后台 TTL 删除:

    accesses 字段上报的统计信息只包括索引 由用户请求驱动的访问。它不包括内部 通过 TTL 索引删除或块拆分和迁移等操作 操作。

    (https://docs.mongodb.com/manual/reference/operator/aggregation/indexStats/)

    【讨论】:

    • 啊,我错过了。谢谢你指点我。但是让我感到困惑的是 MongoDb Compass 中的 Usage 部分在其他集合上的增量,它们都是在后台运行的 TTL 索引:/我在我的问题中添加了屏幕截图以显示我的期望。
    • TTL 索引仍然可以像普通索引一样使用,所以我猜测有一些查询使用这些索引进行过滤或排序,然后会增加索引以显示它被使用。 TTL 删除是通过后台线程 (docs.mongodb.com/manual/core/index-ttl/#delete-operations) 完成的。
    • 感谢您的澄清!
    猜你喜欢
    • 2014-05-05
    • 2016-08-03
    • 2019-09-23
    • 2016-03-22
    • 2013-09-14
    • 2016-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多