sql >> Base de Datos >  >> NoSQL >> MongoDB

Mongodb TTL caduca los documentos antes de tiempo

Sus problemas provienen del uso de marcas de tiempo ingenuas en su zona horaria local. El Preguntas frecuentes de pymongo tiene una entrada que incluye una advertencia para no usar datetime.datetime.now() .Usando utcnow , el ttl -la configuración funciona como se esperaba:

import pymongo
import datetime

mongo_con = pymongo.Connection('localhost', 27017)
mongo_db = mongo_con.Mongo_database
mongo_col = mongo_db.my_TTL_collection

timestamp = datetime.datetime.now()
utc_timestamp = datetime.datetime.utcnow()

mongo_col.ensure_index("date", expireAfterSeconds=3*60)                     

mongo_col.insert({'_id': 'session', "date": timestamp, "session": "test session"})
mongo_col.insert({'_id': 'utc_session', "date": utc_timestamp, "session": "test session"})
# the utc_session will be deleted after around 3 minutes, 
# the other depending on your timezone