mongodb刪除過期資料

2021-08-07 13:09:57 字數 1342 閱讀 9197

通常,你往某乙個mongo庫中插資料,然後按日輪詢,最終這個資料會越來越多,對於不用的資料需要進行清理。這篇文章主要將如何清理過期資料。

舉個例子:你只需要最近2個月的資料,比如今天是20170829,那麼60天之前的資料都可以清理掉。你可以寫乙個crontab任務,然後匯入指令碼,每天執行一次,將60天之前的所有資料進行刪除。

假如你的collections為如下形式: test20170836  

**如下:

#!/usr/bin/python

# -*- coding: utf-8 -*-

"""指令碼:刪除過期的資料

"""import pymongo

from datetime import datetime, timedelta

col_pre = "test"

g_config_type = "online"

config =

}config_online =

}# mongoclient

def get_mongo_db():

if g_config_type == "online":

config_type = config_online

else:

config_type = config

return mongo_db

def del_data(live_date):

"""過期資料清理 刪除2個月前的資料 每天乙個集合

"""mongodb = get_mongo_db()

col_online = col_online_pre + live_date

for collection in mongodb.collection_names():

if str(collection).find("test20") != -1 and len(str(collection)) == len("test20161209") and str(collection) <= col_online:

delonline_flag = mongodb[collection].drop()

print 'del %s status:%s .' % (collection, delonline_flag)

if __name__ == "__main__":

now = datetime.now()

days = 60

twomonthago = now - timedelta(days=days)

livedate = twomonthago.strftime("%y%m%d")

del_data(livedate)

MongoDB自動刪除過期資料 TTL索引

ttl索引是一些特殊的索引,mongodb可以在一段時間後使用它自動從集合中刪除文件。這對於某些型別的資訊比如機器生成的事件資料,日誌和會話資訊是合適的,因為這些資訊只需要在有限的時間內保留在資料庫中。官方文件 目前ttl索引只能在單字段上建立,並且字段型別必須是date型別或者包含有date型別的...

elasticsearch清除過期資料

版本 elasticsearch 7.3.2 指令碼內容如下 root access server elasticsearch 7.3.2 cat clear data.py coding utf 8 import requests import json es host 127.0.0.1 ela...

Redis過期資料和刪除策略

因為記憶體有限,有些資料不需要一直在記憶體中,可以設定一些規則,將一些資料設定過期,在記憶體中刪除,當然也不是隨便刪除,也要考慮到cpu的繁忙與空閒,以免出現redis各種命令執行很多,但是正好出現大量過期資料,已造成伺服器宕機 是在記憶體占用與cpu占用之間尋找一種平衡,顧此失彼都會造成redis...