0

我创建了一个每天备份数据库的 CRON 作业。

该脚本有一个 Mongodump 命令,条件是转储 7 天前的记录。

该脚本运行良好,直到我将--query参数添加到mongodump命令中。

mongodump [host, port and dbparams] --query "{_id: {\$lt: ObjectId(Math.floor(new Date(Date.now() - 86400000*7)/1000).toString(16) + '0000000000000000')}}" 

由于 引发的错误--query,它说:

assertion: 16619 code FailedToParse: FailedToParse: Expecting quoted string: offset:21

那么将这个查询集成到脚本中的正确方法是什么?

4

1 回答 1

2

您可以使用 shell 计算日期字符串,然后将其传递给 --query 选项。这是您的原始 Javascript 表达式和 shell 中的等效计算:

$ mongo --eval "Math.floor(new Date(Date.now() - 86400000*7)/1000).toString(16) + '0000000000000000'"
526a7ac00000000000000000
$ printf '%x0000000000000000' $(($(date +%s) - 86400*7))
526a7ac00000000000000000

然后,您将在一个简短的脚本中使用它,如下所示:

now=$(printf '%x0000000000000000' $(($(date +%s) - 86400*7)))
mongodump --query "{_id: {\$lt: '$now'}}"

希望这可以帮助,

布鲁斯

于 2013-11-01T14:14:46.650 回答