mongodb导出和删除文档

时间:2014-08-18 07:46:05

标签: bash mongodb cron mongoexport

我想每天运行一个unix cron:

  • 将超过3个月的所有文档导出到文档
  • 从馆藏中移除相同的文档。

对于我使用的导出部分:

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吗?

1 个答案:

答案 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