expireAfterSeconds不起作用mongo

时间:2016-09-07 12:48:03

标签: mongodb mongodb-indexes

使用Mongo 3.2

我将expireAfterSeconds设置为3天,因为我们在此集合上不需要超过3天的数据,但我可以在数据库中看到,我们仍然有一个月前的数据。配置错误。

从db.runs.getIndexes()

收集信息
{
   "v" : 1,
   "key" : {
      "_id" : 1
    },
   "name" : "_id_",
   "ns" : "guardian.runs"
},
{
   "v" : 1,
   "key" : {
     "created" : 1
   },
   "name" : "created_1",
   "ns" : "guardian.runs",
   "background" : true,
   "expireAfterSeconds" : 259200
}

应删除的条目:

 [
   {
     "_id": "578c8aa25a3f72387073f2f0",
     "job_id": "573f62bf0e44a2796b6e9de1",
     "owner": null,
     "started": "2016-07-18T07:52:02.447Z",
     "ended": "2016-07-18T07:52:14.119Z",
     "status": "success",
     "result": {
       "success": [],
       "fail": [],
       "warning": []
     }
   }
]

1 个答案:

答案 0 :(得分:4)

您的文档没有TTL index引用的created字段。

您需要在创建每个文档时向您的文档添加created字段,或者更改您的TTL索引以引用startedended(假设它们实际上是数据库中的日期值,而不仅仅是字符串)。