MongoDB 定期清理歷史資料
阿新 • • 發佈:2021-12-24
mongo 可以通過 shell 方式執行 javascript,所以可以藉助 crontab 定時執行指令碼的方式處理。
js 指令碼內容:
const mongo_time_text = 'T00:00:00.000Z' // ISODate 時間型別格式需要 let time_limit = 14 function lastDay() { let currentDay = new Date() currentDay.setDate(currentDay.getDate() - time_limit) let year = currentDay.getFullYear() let month = currentDay.getMonth()+1 let day = currentDay.getDate() return [year, month, day].join('-') + mongo_time_text } function start() { let date = lastDay() let ds = db.getMongo().getDB('ceshi') ds.imMessages.remove({"createTime": {"$lt": ISODate(date)}}) // 刪除 // ds.imMessages.find({"createTime": {"$lt": ISODate(date)}}) // 檢查 查詢的內容是否正確 // let cursor = ds.imMessages.find({"createTime": {"$lt": ISODate(date)}}) // while (cursor.hasNext()) { // printjson(cursor.next()) //} }
shell 執行命令
mongo --eval "load('/tmp/mongo/mongo-test.js'); start()" > /tmp/test_mongo.log