Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从命令行更新mongodb字符串字段?_Javascript_Mongodb_Mongodb Query_Mongodb Shell - Fatal编程技术网

Javascript 如何从命令行更新mongodb字符串字段?

Javascript 如何从命令行更新mongodb字符串字段?,javascript,mongodb,mongodb-query,mongodb-shell,Javascript,Mongodb,Mongodb Query,Mongodb Shell,我正在尝试从命令行(而不是从MongoShell)更新字段 结果变成 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 JavaScri

我正在尝试从命令行(而不是从MongoShell)更新字段

结果变成

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 :

有相同的帮助吗?

这基本上只是引用。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 })

你的答案绝对完美。但实际上,我的核心要求与我之前提出的问题几乎没有什么不同。请重新检查该问题。@Koka您应该提出不同的问题,而不是更改您的问题。但是,当您可以使用驱动程序连接到数据库并发布更新时,为什么要使用命令过程呢?实际上,我还有100多个mongodb操作要执行大约10个数据库,所以我认为使用mongo shell脚本是更好的方法。IMO的第一个问题没有特别的意义,因为您在问题中回答“这基本上只是引用”。。而且我的要求和我在第一个问题中所问的几乎没有什么不同。但我会记住不要再重复这个错误。@Koka不,这不是更好的方法,事实上更糟。你应该问另一个问题来解释你想做什么。我已经完全更新了这个问题。但是感谢尼尔·伦恩指出的。现在我把这个问题更新回上一个问题。在这里问另一个
mongo mydb --eval 'db.users.update({}, { "$set": {  "email": "email@email.com" } },{ "multi": true })