我试图让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()