我试图让 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 native Date type .
这样,下面的应该可以工作:
"date": datetime.utcnow()
关于python - Mongodb TTL 清理不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39768934/