gpt4 book ai didi

bash - mongodb 导出和删除文档

转载 作者:可可西里 更新时间:2023-11-01 09:44:16 25 4
gpt4 key购买 nike

我想每天运行一个 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 合并到同一个 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

如果你想追加导出数据的每个新 block ,你应该用标准 unix stdio redirection 替换 --out :

mongoexport --db mydb --collection mycollection\  --query "`./test2.sh`" >> ./test2.json

关于bash - mongodb 导出和删除文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25358466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com