在mongodb查询中嵌入bash变量
我有一个bash变量在mongodb查询中嵌入bash变量,bash,mongodb,Bash,Mongodb,我有一个bash变量$I,它必须嵌入到mongo shell查询中,以便通过比较日期来获取数据 i=10 while [ "$i" -lt 12 ]; do mongo $MONGO_DATABASE --eval 'printjson(db.mycollection.find({"created_at":{"$lte":ISODate(2016-04-\"$i\"T09:26:31.190Z)}}).toArray())' > $OUTPUT_DIRECTORY/$FI
$I
,它必须嵌入到mongo shell查询中,以便通过比较日期来获取数据
i=10
while [ "$i" -lt 12 ]; do
mongo $MONGO_DATABASE --eval 'printjson(db.mycollection.find({"created_at":{"$lte":ISODate(2016-04-\"$i\"T09:26:31.190Z)}}).toArray())' > $OUTPUT_DIRECTORY/$FILE_NAME
done
上面的实现给出了
i:command not found
Shell变量没有在单引号中展开。使用双引号:
mongo "$MONGO_DATABASE" --eval "printjson...ISODate(2016-04-${i}T09:26:31.190Z)
然后,您需要在正在计算的字符串中转义双引号的用法,例如\“created\u at\”
。您还需要避开$
的其他用法,例如\$lte
或者,您可以在整个命令周围使用单引号,然后使用如下内容:
mongo "$MONGO_DATABASE" --eval 'printjson...ISODate(2016-04-'"$i"'T09:26:31.190Z)
i、 e.关闭单引号,连接shell变量(在双引号内),然后重新打开单引号