Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Mongodb TTL提前到期文档_Python_Mongodb_Ttl - Fatal编程技术网

Python Mongodb TTL提前到期文档

Python Mongodb TTL提前到期文档,python,mongodb,ttl,Python,Mongodb,Ttl,我正在尝试将一个文档插入Mongo数据库,并使其在预定时间后自动过期。到目前为止,我的文档被插入,但总是在0-60秒内从数据库中删除,即使我将“expireAfterSeconds”设置为更长的时间。我知道mongodb大约每60秒删除一次过期文档,所以“expredAfterSeconds”变量似乎不起作用 我遵循了这里的文档: 下面是我的测试代码,它应该在3分钟后过期(删除)文档(但不到一分钟): 有人知道问题出在哪里吗?您的问题来自于在本地时区使用原始时间戳。具有一个条目,其中包含一条警

我正在尝试将一个文档插入Mongo数据库,并使其在预定时间后自动过期。到目前为止,我的文档被插入,但总是在0-60秒内从数据库中删除,即使我将“expireAfterSeconds”设置为更长的时间。我知道mongodb大约每60秒删除一次过期文档,所以“expredAfterSeconds”变量似乎不起作用

我遵循了这里的文档:

下面是我的测试代码,它应该在3分钟后过期(删除)文档(但不到一分钟):


有人知道问题出在哪里吗?

您的问题来自于在本地时区使用原始时间戳。具有一个条目,其中包含一条警告,禁止使用
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

对于Pymongo3,这是更新的语法

mongo_collection.create_index("date", expireAfterSeconds=3*60)

请注意,现在在pymongo和mongodb中mongodb>3时,请确保_索引已被弃用,它将退回到插入_索引
mongo_collection.create_index("date", expireAfterSeconds=3*60)