MongoDB - TTL 索引 - 未删除的文档
Posted
技术标签:
【中文标题】MongoDB - TTL 索引 - 未删除的文档【英文标题】:MongoDB - TTL Index - documents not removed 【发布时间】: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 >>>
【问题讨论】:
【参考方案1】:好吧,没关系。这也是笔误。这是 我正在阅读的书中有一个错字(第 114 页)。
http://www.oreilly.com/catalog/errata.csp?isbn=0636920028031
正确的选项是 expireAfterSeconds 而不是 expireAfterSecs。 因此,由于这个错字,我没有正确创建 TTL 索引。 提出问题后4-5分钟意识到这一点。
【讨论】:
以上是关于MongoDB - TTL 索引 - 未删除的文档的主要内容,如果未能解决你的问题,请参考以下文章