我正在尝试从命令行更新字段(不是来自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 :
对此有何帮助?
答案 0 :(得分:1)
这基本上只是引用。 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 })