linux定时清理mongodb数据

1、测试环境导入bson数据

    将数据导入mongodb的测试环境中,使用如下命令, -d表示数据库名称,默认文件名作为 collections  的名称

mongoimport -d test --file chat_item.bson

   导入进去的数据日期类型被转换成为了字符串,需要进行转换为日期才能进行比较

db.chat_item.find().forEach(function(data) {
	data.createTime= new ISODate(data.createTime);
	db.chat_item.save(data);
});

2、 写js脚本

var beforeDay = 7;  // 要清理N天之前的数据
var beforeMill = beforeDay * 24 * 60 * 60 * 1000; // 将N天转换为毫秒值
var currentTimeMill = (new Date()).valueOf() ; //将当天转换为毫秒值
var count=db.chat_item.find({'createTime':{'$lt':new Date(currentTimeMill - beforeMill)}}).count();        // 记录删除的条数 (N天前的数据)
db.chat_item.remove({'createTime':{'$lt':new Date(currentTimeMill - beforeMill)}}); //进行删除
print(count + '条清理完毕...');

因为ISODate是格林威治时间,可能差8个小时,这个还没有测试,如果差8小时,在对毫秒值进行加减。

3、使用crontab

0 0 * * * echo /opt/soft/mongodb/mongodb-linux-x86_64-4.0.10/bin/mongo --quiet /opt/soft/mongodb/mongodb-linux-x86_64-4.0.10/script/test.js 

这个写好了因为暂时不需要了,所以没有详细测试,待测试后再进行修改此文章。

经过简单测试,确实是比格林威治时间快了8个小时,少删除了8个小时的数据,那么把当前时间 再减去 8个小时的毫秒值即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值