python pymongo过期时间设置以及删除偏移

本文介绍了MongoDB中如何设置TTL索引来实现数据自动过期,强调了过期时间至少为5秒且数据不会立即删除,因数据库的后台清理机制可能导致延迟。此外,该功能不适用于需要精确时间验证的场景,如用户验证。示例代码展示了使用pymongo创建TTL索引的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

过期时间设置需要连索引一起设置
而该索引成为TTL索引,需要用到UTC时间设置,否则不会过期
然而这里最少的过期时间为5秒,少于5秒会报错。
在这里插入图片描述
这里需要注意,过期时间一到,数据可能还不会立刻删除。这是因为mangodb有一个轮询操作,过期时间的记录会记录在后台任务中,等数据库的删档时间即60一到就会执行后台任务的过期时间记录。没到或者过了删档时间,则会等待下一个删档时间的来临。
这也导致了,该过期时间功能,不能执行一些需要精确的验证操作,如用户验证等。
以下是官方文档原话:
在这里插入图片描述
Mongodb官方文档TTL索引说明
https://docs.mongodb.com/v4.4/core/index-ttl/
pymongo官方文档:
https://pymongo.readthedocs.io/en/latest/

最后附上源代码:

# -*- coding: utf-8 -*-
"""
@Time    : 2021/9/27 10:17
@Author  : Pierce
@Email   : 1042161713@qq.com
@File    : 过期时间.py
"""
import pymongo
import datetime
import time
# 连接数据库

client = pymongo.MongoClient("localhost", 27017)
db = client.view_book

# 获取表
table = db.book1
# 创建索引并设置过期时间
table.create_index([("timer", 1)], expireAfterSeconds=5)

data = {"name": "PHP从入门到入土",
        "subject": 'PHP',
        "price": 12,
        "page": 200,
        "author": "Pierce",
        "press": "帅哥出版社",
        "timer": datetime.datetime.utcnow()}  # 需要用UTC时间
# table.insert_one(data)
# d1 = table.find_one()
# print(d1)
client.close()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pierce°ღ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值