MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongodb TTL lässt Dokumente vorzeitig ablaufen

Ihre Probleme entstehen durch die Verwendung naiver Zeitstempel in Ihrer lokalen Zeitzone. Der FAQ von pymongo hat einen Eintrag, der eine Warnung enthält, datetime.datetime.now() nicht zu verwenden .Mit utcnow , das ttl -Einstellung funktioniert wie erwartet:

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