我正在尝试使用 mongo.exe --eval 命令行开关调用 MongoDB javascript 片段。从 Windows 命令行运行时,这可以正常工作,但我想从 Powershell 脚本中调用它,如下所示:
Invoke-Expression "& `"C:\MongoDB\bin\mongo.exe`" localhost:27017/mydb --eval `"db.mydata.update({}, {`$set : {v : 1}})`" --quiet"
mydata 集合中只有一个文档,我想将其 v
字段设置为 1
。但是,上面的表达式在从 Powershell 脚本运行并且不更新文档时返回 SyntaxError: invalid property id (shell eval):1
。
让这更令人困惑的是,以下内容按预期工作:
Invoke-Expression "& `"C:\MongoDB\bin\mongo.exe`" localhost:27017/mydb --eval `"printjson(db.mydata.findOne())`" --quiet"
任何想法我可能做错了什么?
更新:
解决办法:
Invoke-Expression '& "C:\MongoDB\bin\mongo.exe" localhost:27017/mydb --eval "db.mydata.update({}, {`$set : {v : 2}})" --quiet'
最佳答案
尝试在 eval 语句周围使用单引号而不是双引号。
关于mongodb - 使用来自 Powershell 的 shell --eval 开关调用 MongoDB 更新时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9003778/