2014-03-26 147 views
0

我在这里看到了类似的问题,但是在那里OP声称他有一个错字。MongoDB - TTL索引 - 文档没有删除

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分钟就意识到了这一点。