問題は、ローカルタイムゾーンで単純なタイムスタンプを使用することから発生します。 pymongoのFAQ
datetime.datetime.now()
を使用しないようにという警告を含むエントリがあります 。utcnow
の使用 、ttl
-設定は期待どおりに機能します:
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