python – Mongo 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()), 

问题所在的任何线索?

谢谢,
贾尼斯

最佳答案 正如您所猜测的,问题在于您如何插入日期值.我引用
docs

If the indexed field in a document is not a date or an array that
holds a date value(s), the document will not expire.

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

这样,以下应该工作:

"date": datetime.utcnow()
点赞