【问题标题】:How to update a mongodb string field from command line?如何从命令行更新 mongodb 字符串字段?
【发布时间】:2014-10-24 06:57:17
【问题描述】:

我正在尝试从命令行更新字段(不是从 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 :

有什么帮助吗?

【问题讨论】:

标签: javascript mongodb mongodb-query mongodb-shell


【解决方案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 })

【讨论】:

  • 你的回答绝对完美。但实际上我的核心要求与我之前提出的问题略有不同。请再次查看问题。
  • @Koka 你应该问一个不同的问题而不是改变你的问题。但是,当您可以使用驱动程序连接到数据库并发布更新时,为什么还要使用命令进程呢?
  • 实际上我有 100 多个其他 mongodb 操作来执行大约 10 个数据库,所以我认为使用 mongo shell 脚本是更好的方法。
  • IMO 第一个问题没有特别意义,因为您在“这基本上只是引用”的问题中回答了这个问题。而且我的要求与我在第一个问题中提出的要求略有不同。但我会记住不要再犯这个错误了。
  • @Koka 不,这不会是更好的方法,实际上更糟。你应该问另一个问题来解释你想做什么。
猜你喜欢
  • 2017-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多