mongo javascript --eval失败了

时间:2013-12-12 17:37:18

标签: javascript mongodb

这适用于mongo终端

$ mongo datas
> db.mydb.update({},{$set : {'ids.my_key':''}}, {multi:true})

但是当从命令行开始eval时失败。

mongo datas --eval "db.mydb.update({},{$set : {'ids.my_key':''}}, {multi:true})"
MongoDB shell version: 2.4.5
connecting to: datas
Thu Dec 12 12:35:24.063 JavaScript execution failed: SyntaxError: Unexpected token :

我认为它与报价有关,但是还没有能够让它发挥作用。

2 个答案:

答案 0 :(得分:5)

问题不在于mongo shell,而是你的OS shell试图解释你想要传递给mongo的一些字符。尝试相同的语法,但在整个表达式和单引号内使用单引号:

$ mongo datas --eval "db.mydb.update({},{$set : {'ids.my_key':''}}, {multi:true})"
MongoDB shell version: 2.4.5
connecting to: datas
Thu Dec 12 18:14:22.049 JavaScript execution failed: SyntaxError: Unexpected token :
$ mongo datas --eval 'db.mydb.update({},{$set : {"ids.my_key":""}}, {multi:true})'
MongoDB shell version: 2.4.5
connecting to: datas
$ 

答案 1 :(得分:1)

尝试更新mongo shell版本:脚本在2.4.8上成功执行。