我是靠谱客的博主 香蕉热狗,最近开发中收集的这篇文章主要介绍使用pymongo给mongo中的数据添加过期时间,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

     最近工作中用到了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中的数据添加过期时间所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(67)

评论列表共有 0 条评论

立即
投稿
返回
顶部