我有一个 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/$FILE_NAME
done
上面的实现给出了i: command not found
最佳答案
Shell 变量不会在单引号内展开。使用双引号:
mongo "$MONGO_DATABASE" --eval "printjson...ISODate(2016-04-${i}T09:26:31.190Z)
然后您将需要在您正在评估的字符串中转义双引号的用法,例如\"created_at\"
。您还需要转义 $
的其他用法,例如\$lte
.
或者,您可以在整个命令周围使用单引号,然后使用如下内容:
mongo "$MONGO_DATABASE" --eval 'printjson...ISODate(2016-04-'"$i"'T09:26:31.190Z)
即关闭单引号,连接 shell 变量(在双引号内),然后重新打开单引号。
关于bash - 在 mongodb 查询中嵌入 bash 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38348368/