使用Powershell中的shell --eval开关调用MongoDB更新时遇到问题

Joe*_*ler 5 powershell mongodb

我试图使用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"
Run Code Online (Sandbox Code Playgroud)

mydata集合中只有一个文档,我想将其v字段设置为1.但是,上面的表达式SyntaxError: invalid property id (shell eval):1从Powershell脚本运行时返回,并且不更新文档.

更令人困惑的是,以下工作符合预期:

Invoke-Expression "& `"C:\MongoDB\bin\mongo.exe`" localhost:27017/mydb --eval `"printjson(db.mydata.findOne())`" --quiet"
Run Code Online (Sandbox Code Playgroud)

我有什么想法可能做错了吗?

更新:

解决方案:

Invoke-Expression '& "C:\MongoDB\bin\mongo.exe" localhost:27017/mydb --eval "db.mydata.update({}, {`$set : {v : 2}})" --quiet'
Run Code Online (Sandbox Code Playgroud)

Eve*_*man 18

尝试在eval语句周围使用单引号而不是双引号.