mongodb删除过期数据
2017-08-29 17:51
453 查看
通常,你往某一个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 = {
'MONGODB_DATABASE': {
"host": "X.X.X.X",
"port": X,
"username": "XXX",
"password": "XXX",
"db": "XXXX",
}
}
config_online = {
'MONGODB_DATABASE': {
"host": "127.0.0.1",
"port": XXXX,
"username": "XXX",
"password": "XXX",
"db": "XXX",
}
}
# mongoClient
def get_mongo_db():
if G_CONFIG_TYPE == "online":
config_type = config_online
else:
config_type = config
app_mongodb_config = config_type['MONGODB_DATABASE']
mongo_client = pymongo.MongoClient(app_mongodb_config['host'],
app_mongodb_config['port'])
mongo_db = mongo_client[app_mongodb_config['db']]
mongo_db.authenticate(app_mongodb_config['username'],
app_mongodb_config['password'])
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)
举个例子:你只需要最近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 = {
'MONGODB_DATABASE': {
"host": "X.X.X.X",
"port": X,
"username": "XXX",
"password": "XXX",
"db": "XXXX",
}
}
config_online = {
'MONGODB_DATABASE': {
"host": "127.0.0.1",
"port": XXXX,
"username": "XXX",
"password": "XXX",
"db": "XXX",
}
}
# mongoClient
def get_mongo_db():
if G_CONFIG_TYPE == "online":
config_type = config_online
else:
config_type = config
app_mongodb_config = config_type['MONGODB_DATABASE']
mongo_client = pymongo.MongoClient(app_mongodb_config['host'],
app_mongodb_config['port'])
mongo_db = mongo_client[app_mongodb_config['db']]
mongo_db.authenticate(app_mongodb_config['username'],
app_mongodb_config['password'])
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索引
- mongodb 设置自动删除过期数据
- 【mongodb】设置自动删除过期数据
- mongodb 设置自动删除过期数据
- mongodb 根据主键id 删除数据
- mongodb 集合创建、集合数据添加和集合删除
- 通过nodejs插入删除MongoDB数据
- mongodb删除数据后无法释放空间
- Sql 正确删除用户过期的数据
- memcache 的过期数据删除机制
- mysql定时删除过期数据记录
- mongodb删除重复数据
- redis如何删除过期数据
- mongodb基础数据删除
- sql删除过期数据
- Spring整合MongoDB更新、删除数据的返回值
- mongodb源码分析(十一)数据的删除
- MongoDB 数据库创建删除、表(集合)创建删除、数据增删改查
- 大数据量的MongoDB快速删除数据
- MongoDB 删除数据