我想每天运行一个 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 合并到同一个 cron 吗?
最佳答案
是的你可以。
最简单的方法是将两个命令合并为一个单行命令:
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
如果你想附加每个新的导出数据块,你应该用标准的 unix
--out
redirection 替换 stdio
:mongoexport --db mydb --collection mycollection\ --query "`./test2.sh`" >> ./test2.json
关于bash - mongodb 导出和删除文档,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25358466/