Mongo TTL清理不起作用

时间:2016-09-29 11:24:02

标签: python mongodb ttl

我试图让Mongo删除具有TTL功能的文档,但没有成功。尝试了很多东西,但是mongo似乎没有清理过。

我的索引:

    {
    "v" : 1,
    "key" : {
        "date" : 1
    },
    "name" : "date_1",
    "ns" : "history.history",
    "expireAfterSeconds" : 60
}

文档中的日期值:

       "date" : "2016-09-29 11:08:46.461207",

db.serverStatus()。metrics.ttl:

的输出
{ "deletedDocuments" : NumberLong(0), "passes" : NumberLong(29) }

db.serverStatus()的时间输出:

"localTime" : ISODate("2016-09-29T11:19:45.345Z")

我唯一怀疑的是我从Python插入值的方式。可能是因为它在某种程度上是错误的。我有一个JSON文档,其中包含以下元素:

"date": str(datetime.utcnow()), 

问题所在的任何线索?

谢谢, 贾尼斯

1 个答案:

答案 0 :(得分:2)

正如您所猜测的,问题在于您如何插入日期值。我引用docs

  

如果文档中的索引字段不是日期或数组   持有日期值,文件不会过期。

您正在将日期转换为字符串。如果您正在使用pymongo驱动程序,他将很好地处理日期时间并将其转换为MongoDB本机Date type

这样,以下内容应该有效:

"date": datetime.utcnow()