Mongoexport shell脚本 - 查询错误

时间:2017-01-14 22:34:33

标签: mongodb shell mongodb-query mongoexport

我编写了一个shell脚本来创建昨天使用mongoexport命令更新的记录的数据转储。

yesterday=$(date -d 'yesterday 00:00:00' '+%s'000)
today=$(date -d 'today 00:00:00' '+%s'000)
query="'{\"updated_at\":{\$gte:new Date(${yesterday}),\$lte:new Date(${today})}}'"
echo ${query}

mongoexport -h $HOST -d $DOC -c $COL_NAME -u $USER -p $PWD -q ${query} -o $fileName

添加查询后,当我运行shell脚本时,我在控制台

中得到以下错误
'{"updated_at":{$gte:new Date(1484287200000),$lte:new Date(1484373600000)}}'
too many positional arguments: [Date(1484287200000),$lte:new Date(1484373600000)}}']
try 'mongoexport --help' for more information

当我在命令行中运行此查询时,它可以正常工作。有人请允许我知道为什么在shell脚本中运行时会出现此错误?

这适用于命令行。

$mongoexport -h <<HOST>> -d <<DOC>> -c <<COL> -u <<UN>> -p <<PWD>> -q '{"updated_at":{"$gte":new Date(1484287200000),"$lte":new Date(1484373600000)}}'

2 个答案:

答案 0 :(得分:1)

bash中有一条经验法则:当您使用变量时,始终用双引号括起来。有例外,但它们很少见。

mongoexport -h "$HOST" -d "$DOC" -c "$COL_NAME" -u "$USER" -p "$PWD" -q "${query}" -o "$fileName"

答案 1 :(得分:0)

此代码对我有用

yesterday=$(date -d 'yesterday 00:00:00' '+%s'000)
today=$(date -d 'today 00:00:00' '+%s'000)
query1="{\"transactionDate\":{\$gte: new Date(${yesterday}),\$lte: new Date(${today})}}"
echo $yesterday
echo $today

mongoexport -d databasename-c collectionname --host yourip --port 27017 -p password -u username-q "${query1}" --type=csv --fields=transactionDate,amount > test5.csv