这适用于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 :
我认为它与报价有关,但是还没有能够让它发挥作用。
答案 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上成功执行。