Pymongo和TTL错误的到期时间

时间:2019-02-18 15:14:36

标签: python mongodb pymongo ttl

我想使用pymongo将数据保存到MongoDB中,如果没有人删除它,则它需要在一个月后(可能更少)自动过期(另一个脚本将执行读取+删除)。

此刻,我正在用expireAfterSeconds测试TTL,但它无法达到我想要的方式。这是我的示例:

client = MongoClient()
db = client.save_db
model = db.save_co
model.create_index("inserted", expireAfterSeconds = 120)
inserted_id = model.insert_one({"order_number":123456789, "inserted":datetime.datetime.utcnow()}).inserted_id

i = 1
while model.find_one(inserted_id) is not None:
    time.sleep(1)
    i += 1

print(i)
exit()

我认为打印值应该是120,但实际上是154160,有时甚至是123

我没有做错什么,有帮助吗?谢谢

1 个答案:

答案 0 :(得分:0)

在文档中:“ TTL索引不保证过期的数据将在过期后立即删除。文档过期到MongoDB从数据库中删除文档之间可能会有延迟。”在这里查看:https://docs.mongodb.com/v4.0/core/index-ttl/#timing-of-the-delete-operation