我正在尝试从命令行(不是从 mongo shell)更新字段
mongo mydb --eval "db.users.update({}, { $set : { email : "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="0a6f676b63664a6f676b636624696567" rel="noreferrer noopener nofollow">[email protected]</a>" } })"
结果
Fri Oct 24 12:23:46.102 JavaScript execution failed: SyntaxError: Unexpected token :
再次尝试
mongo mydb --eval "db.users.update({}, { $set : { email : \"<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="187d75797174587d75797174367b7775" rel="noreferrer noopener nofollow">[email protected]</a>\" } })"
结果相同
Fri Oct 24 12:24:05.559 JavaScript execution failed: SyntaxError: Unexpected token :
有同样的帮助吗?
最佳答案
这基本上只是引用。 shell 在内部通常更宽容,但确实期望有效的 JSON,否则:
mongo mydb --eval "db.users.update({}, { '$set': { 'email' : '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="abcec6cac2c7ebcec6cac2c785c8c4c6" rel="noreferrer noopener nofollow">[email protected]</a>' } })"
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": "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="7d18101c14113d18101c1411531e1210" rel="noreferrer noopener nofollow">[email protected]</a>" } },{ "multi": true })
关于javascript - 如何从命令行更新 mongodb 字符串字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26542946/