国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

mongodb 設置自動刪除過期數據

2019-11-10 17:12:51
字體:
來源:轉載
供稿:網友

Time To Live(TTL) 集合

MongoDB 2.2 引入一個新特性–TTL 集合,TTL集合支持失效時間設置,或者在某個特定時間, 集合自動清除超時文檔,者用來保存一個諸如session會話信息的時候非常有用。

如果想使用TTL集合,用用到 expireAfterSeconds 選項

mongo

官網使用文檔設置方法:

Expire Documents after a Specified Number of Seconds

首先創建索引,設置過期時間

db.log_events.createIndex( { "createdAt": 1 }, { expireAfterSeconds: 3600 } )

然后存儲數據入庫

db.log_events.insert( { "createdAt": new Date(), "logEvent": 2, "logMessage": "Success!"} )

mongodb 會在 createdAt 數值大于 expireAfterSeconds 指定的值。

Expire Documents at a Specific Clock Time

與上面的設置類似 首先建立索引,設置 expireAfterSeconds 為 0

db.log_events.createIndex( { "expireAt": 1 }, { expireAfterSeconds: 0 } )

然后存儲數據

db.log_events.insert( { "expireAt": new Date('July 22, 2013 14:00:00'), "logEvent": 2, "logMessage": "Success!"} )

expireAt 的值為特定的時間值,等時間到達expireAt的值時,這個文檔就 失效了。

pymongo

由于自己使用python進行mongodb的使用,程序如下 1 設置文檔在66秒后過期。

from pymongo import MongoClientimport pymongoimport datetimeclient = MongoClient("10.168.99.118", 27017)collection = client.test.expirecollection.create_index([("time", pymongo.ASCENDING)], expireAfterSeconds=66)data = { "one": 1, "two": 235, "time": datetime.datetime.utcnow(),}collection.insert(data)

2 設置特定時間

from pymongo import MongoClientimport pymongoimport datetimeclient = MongoClient("10.168.99.118", 27017)collection = client.test.expirecollection.create_index([("time", pymongo.ASCENDING)], expireAfterSeconds=0)data = { "one": 1, "two": 235, "time": datetime.datetime.utcnow()+ datetime.timedelta(seconds=66),}collection.insert(data)

注意,上面的時間使用的是datetime.datetime.utcnow() 而不是 datetime.datetime.now(), 這兩者的時間是有差別的,數據存入mongodb的客戶端中可以看得到。 現在時間是 2017-02-09 14:36 第一條數據使用 datetime.datetime.utcnow() 的時間 第二條數據使用 datetime.datetime.now() 的時間

這里寫圖片描述

所以,第二條數據會在晚上 10點多才會過期。

mongoengine

自己使用的Django中的數據庫也是mongodb。

from mongoengine import *import datetimeimport timeconnect('test', host='10.168.99.118', port=27017)class Session(Document): created = DateTimeField(default=datetime.datetime.utcnow()-datetime.timedelta(seconds=60)) last = DateTimeField(default=datetime.datetime.utcnow()) num = IntField(unique=True) count = IntField(default=0) meta = { 'indexes': [ {'fields': ['created'], 'expireAfterSeconds': 66} ] }s = Session.objects(num=51)if len(s)>0: PRint(s[0].count)else: b = s[0] b.num = 51 b.count = 2 b.save()

修改成特定時間過期的方式與pymongo中的類似。

參考文檔: python - Mongodb TTL expires documents early http://www.itgo.me/a/8424428520865988282/mongodb-ttl-expires-documents-early

MongoDB自動刪除過期數據–TTL索引 http://blog.csdn.net/jianlong727/article/details/54631124


上一篇:最大子序列和問題

下一篇:裝飾者模式

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 汉川市| 瑞金市| 海门市| 昭通市| 宁城县| 吴江市| 于田县| 太保市| 平乐县| 乃东县| 通道| 磴口县| 简阳市| 兴义市| 岳阳县| 德保县| 应城市| 科技| 合山市| 伊金霍洛旗| 安顺市| 即墨市| 西乌| 屏南县| 道孚县| 垣曲县| 清徐县| 华池县| 新晃| 綦江县| 巴青县| 波密县| 同仁县| 双桥区| 正镶白旗| 宣威市| 张掖市| 盐边县| 东兰县| 广州市| 博罗县|