2

我正在尝试从命令行更新一个字段(不是来自 mongo shell)

mongo mydb --eval "db.users.update({}, { $set : {  email : "email@email.com" } })"

结果成

Fri Oct 24 12:23:46.102 JavaScript execution failed: SyntaxError: Unexpected token :

再次尝试

mongo mydb --eval "db.users.update({}, { $set : {  email : \"email@email.com\" } })"

相同的结果

Fri Oct 24 12:24:05.559 JavaScript execution failed: SyntaxError: Unexpected token :

有什么帮助吗?

4

1 回答 1

2

这基本上只是引用。shell 通常在内部更宽容,但在其他情况下确实期望有效的 JSON:

mongo mydb --eval "db.users.update({}, { '$set': {  'email' : 'email@email.com' } })"
MongoDB shell version: 2.6.5
connecting to: mydb
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

实际上,为了更好地与其他修饰符一起使用,multi然后反转使用的引号类型:

mongo mydb --eval 'db.users.update({}, { "$set": {  "email": "email@email.com" } },{ "multi": true })
于 2014-10-24T07:07:16.190 回答