我有一个带有查询的shell脚本,可以在MongoDB
数据库中获取一些信息,而我在查询时会遇到问题。
例如,如果查询很简单就可以了,如下所示:
exec_mongo='mongo -u USER HOST/MYDATABASE -pPASSWORD --authenticationDatabase admin'
query='printjson(db.MYDATABASE.find().toArray())'
res=$($exec_mongo --eval $query)
echo $res >> results.csv
但是,如果我添加一些参数,例如“AND”或“OR”,则不起作用:
exec_mongo='mongo -u USER HOST/MYDATABASE -pPASSWORD --authenticationDatabase admin'
query='printjson(db.MYDATABASE.find($and: [ {DATE:"2018"}, {NAME:"TEST"} ]).toArray())'
res=$($exec_mongo --eval $query)
echo $res >> results.csv
我想这可能是因为$and
,但不确定。有人可以帮帮我吗?
注意:如果我直接在mongodb访问(mongo shell
)中输入,则上面的代码可以正常工作。
提前致谢。
答案 0 :(得分:0)
在bash
和sh
中,某些字符需要转义。您还需要使用"
而不是'
。请参阅here以获得有关区别的答案。
在你的脚本中; $ [ {
所有人都需要在\
之前逃脱。
query="printjson(db.MYDATABASE.find( \$and: \[ \{ DATE:"2018" \}, \{ NAME:"TEST" \} \])"