概述
最近工作中用到了mongodb,就用了pymongo来操作mongo,由于数据量过大,所以也看了下网上关于mongo数据的自动清理问题,Mongo 2.2引入了一个新特性-TTL(time to live)集合,经过指定的时间间隔或者在指定的时间点自动清除数据,pymongo对此也有实现。
from pymongo import MongoClient
import pymongo
import datetime
client = MongoClient(“mongo-ip”, 27017) # 获取mongoclient对象,参数为mongo的ip和端口(默认27017)
collection = client.test.expire # 获取collection对象,test为数据库名,expire为collection名
collection.create_index([("time", pymongo.ASCENDING)], expireAfterSeconds=66)
# 给集合添加TTL索引,expireAfterSeconds为过期时间,需要注意的是同一collection里,想要修改过期时间,索引([("time", pymongo.ASCENDING)])的值不能跟以前一样,否则会报错。
如果索引绑定的字段是数组类型,并且索引中有多个日期值,mongo会用数组中的最早日期值作为到期阀值。
data = {
"name": "dachui",
"gender": "male",
"time": datetime.datetime.utcnow(),
}
# 构造数据,需要注意,有TTL索引的集合,索引栏必须为BSON的时间格式,如果不是时间格式,或者不包含索引字段,TTL就会无效,数据也不能自动清除。
collection.insert(data) # 插入数据
操作完成后可在mongo中观察,到期之后数据将自动清除。
删除机制:
当你建立TTL索引之后,mongo会在后台启一个任务来监控,默认每六十秒运行一次,在文档到期和后台任务运行期间,文档可能保存在集合中,另外,由于删除操作的持续时间取决于mongod的工作负载,因此过期数据可能会在后台任务运行之间的60秒之后的某个时间段内存在。
官网地址:https://docs.mongodb.com/v3.2/core/index-ttl/
最后
以上就是香蕉热狗为你收集整理的使用pymongo给mongo中的数据添加过期时间的全部内容,希望文章能够帮你解决使用pymongo给mongo中的数据添加过期时间所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复