我想每天运行一个unix cron:
对于我使用的导出部分:
mongoexport --db mydb --collection mycollection\ --query "`./test2.sh`" --out ./test2.json
和" ./test2.sh
"文件包含:
#!/bin/bash
d=`date --date="-3 month" -u +"%Y-%m-%dT%H:%M:%SZ"`
echo '{ "timeCreated": { "$lte": { "$date": "'$d'" } } }'
对于我可以做的删除部分:
mongo mydb /home/dev/removeDocs.js
removeDocs.js:
var d = new Date();
d.setMonth(d.getMonth()-3);
db.GameHistory.remove({ timeCreated: { $lte: d} });
如何同步2个命令?我想在导出完成后运行删除命令。我可以将2合并到同一个cron吗?
答案 0 :(得分:2)
是的,你可以。
最简单的方法是将两个命令合并为单个单行:
mongoexport --db mydb --collection mycollection\ --query "`./test2.sh`" --out ./test2.json && mongo mydb /home/dev/removeDocs.js
但我建议您创建shell脚本来存档您的数据库:
#!/bin/bash
set -e # stop on first exception
mongoexport --db mydb --collection mycollection\ --query "`./test2.sh`" --out ./test2.json
mongo mydb /home/dev/removeDocs.js
如果要附加每个新的导出数据块,则应将--out
替换为标准unix stdio
redirection:
mongoexport --db mydb --collection mycollection\ --query "`./test2.sh`" >> ./test2.json