【问题标题】:MongoDB - TTL Index - documents not removedMongoDB - TTL 索引 - 未删除的文档
【发布时间】:2014-05-05 15:44:49
【问题描述】:

我在这里看到了一个类似的问题,但是 OP 声称他有错字。

mongodb TTL not removing documents

我想我没有错别字。我通过插入 3 个文档创建了一个集合。
然后我在 LastUpdated 上添加了一个 TTL 索引,expireAfterSecs = 120 秒。
超过 3-4-5 分钟后,没有文件被删除。

这是为什么呢?我做错了什么?

[test] 2014-03-26 18:35:35.154 >>> db.test_ttl.getIndexes();
[
        {
                "v" : 1,
                "key" : {
                        "_id" : 1
                },
                "ns" : "test.test_ttl",
                "name" : "_id_"
        },
        {
                "v" : 1,
                "key" : {
                        "LastUpdated" : 1
                },
                "ns" : "test.test_ttl",
                "name" : "LastUpdated_1",
                "expireAfterSecs" : 120
        }
]
[test] 2014-03-26 18:35:45.378 >>> db.test_ttl.find();
{
        "_id" : ObjectId("5333556a426e7309c6213d19"),
        "x" : 1,
        "LastUpdated" : ISODate("2014-03-26T22:32:10.628Z")
}
{
        "_id" : ObjectId("5333556e426e7309c6213d1a"),
        "x" : 2,
        "LastUpdated" : ISODate("2014-03-26T22:32:14.976Z")
}
{
        "_id" : ObjectId("53335581426e7309c6213d1b"),
        "x" : 100,
        "LastUpdated" : ISODate("2014-03-26T22:32:33.912Z")
}
[test] 2014-03-26 18:35:50.58 >>> new Date();
ISODate("2014-03-26T22:35:52.819Z")
[test] 2014-03-26 18:35:52.835 >>> new Date();
ISODate("2014-03-26T22:36:03.927Z")
[test] 2014-03-26 18:36:03.927 >>> db.test_ttl.find();
{
        "_id" : ObjectId("5333556a426e7309c6213d19"),
        "x" : 1,
        "LastUpdated" : ISODate("2014-03-26T22:32:10.628Z")
}
{
        "_id" : ObjectId("5333556e426e7309c6213d1a"),
        "x" : 2,
        "LastUpdated" : ISODate("2014-03-26T22:32:14.976Z")
}
{
        "_id" : ObjectId("53335581426e7309c6213d1b"),
        "x" : 100,
        "LastUpdated" : ISODate("2014-03-26T22:32:33.912Z")
}
[test] 2014-03-26 18:36:06.376 >>> new Date();
ISODate("2014-03-26T22:36:07.671Z")
[test] 2014-03-26 18:36:07.671 >>>
[test] 2014-03-26 18:39:32.733 >>> db.test_ttl.find();
{
        "_id" : ObjectId("5333556a426e7309c6213d19"),
        "x" : 1,
        "LastUpdated" : ISODate("2014-03-26T22:32:10.628Z")
}
{
        "_id" : ObjectId("5333556e426e7309c6213d1a"),
        "x" : 2,
        "LastUpdated" : ISODate("2014-03-26T22:32:14.976Z")
}
{
        "_id" : ObjectId("53335581426e7309c6213d1b"),
        "x" : 100,
        "LastUpdated" : ISODate("2014-03-26T22:32:33.912Z")
}
[test] 2014-03-26 18:39:44.355 >>> new Date();
ISODate("2014-03-26T22:39:46.086Z")
[test] 2014-03-26 18:39:46.102 >>>

【问题讨论】:

    标签: mongodb indexing


    【解决方案1】:

    好吧,没关系。这也是笔误。这是
    我正在阅读的书中有一个错字(第 114 页)。

    http://www.oreilly.com/catalog/errata.csp?isbn=0636920028031

    正确的选项是 expireAfterSeconds 而不是 expireAfterSecs。
    因此,由于这个错字,我没有正确创建 TTL 索引。
    提出问题后4-5分钟意识到这一点。

    【讨论】:

      猜你喜欢
      • 2016-08-03
      • 2019-09-23
      • 2013-09-14
      • 2016-04-20
      • 1970-01-01
      • 1970-01-01
      • 2016-03-22
      • 1970-01-01
      相关资源
      最近更新 更多