使用AND / OR对MongoDB进行Shell脚本查询

时间:2018-02-07 18:29:44

标签: bash mongodb shell mongodb-query

我有一个带有查询的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)中输入,则上面的代码可以正常工作。

提前致谢。

1 个答案:

答案 0 :(得分:0)

bashsh中,某些字符需要转义。您还需要使用"而不是'。请参阅here以获得有关区别的答案。

在你的脚本中; $ [ {所有人都需要在\之前逃脱。

query="printjson(db.MYDATABASE.find( \$and: \[ \{ DATE:"2018" \}, \{ NAME:"TEST" \} \])"