sql >> Database >  >> NoSQL >> MongoDB

Mongodb TTL verloopt documenten vroegtijdig

Uw problemen komen voort uit het gebruik van naïeve tijdstempels in uw lokale tijdzone. De FAQ van pymongo heeft een vermelding die een waarschuwing bevat om datetime.datetime.now() . niet te gebruiken .Gebruik utcnow , de ttl -instelling werkt zoals verwacht:

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


  1. Eenvoudige HTTP/TCP-statuscontrole voor MongoDB

  2. Mongoose:Cast-to-date mislukt voor waarde bij het bijwerken van een document

  3. MongoDB werkt alle velden met arrayfout bij

  4. mongoDB/mongoose:uniek, zo niet null