出现的问题:
mongo数据设置了ttl,但是数据并没有被删除,我们也确实存放了time
,但是就是不自动清理
问题原因:
pymongo的插入代码是:
ti = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
mongo_object.insert_one({"time":ti})
插入的时间是字符串格式,并不是时间格式。不同点看图:
mongo数据
解决办法:
ttl需要的是date类型的,所以我们需要插入date类型的数据:
import dateutil.parser
mg=mongo对象
#插入当前时间
mg.insert({"a":2,"time":dateutil.parser.parse(datetime.datetime.utcnow().isoformat())})
#插入指定时间
mg.insert({"a":3,"time":dateutil.parser.parse("2018-06-12 00:00:00")})
取值
条件里也要处理一下:
last_day = (datetime.datetime.today() ).strftime("%Y-%m-%d")
start = '{} 00:00:00'.format(last_day)
end = '{} 23:59:59'.format(last_day)
con = {
'time': {'$gte': dateutil.parser.parse(start), '$lte': dateutil.parser.parse(end)}
}
print(con)
for i in mg.find(con):
print(i.get("time"))
网友评论