Проблемы с вызовом обновления MongoDB с помощью переключателя оболочки --eval из Powershell - PullRequest
5 голосов
/ 25 января 2012

Я пытаюсь вызвать фрагмент JavaScript MongoDB с помощью ключа командной строки mongo.exe --eval. Это прекрасно работает при запуске из командной строки Windows, но я хочу вызвать его из скрипта Powershell следующим образом:

Invoke-Expression "& `"C:\MongoDB\bin\mongo.exe`" localhost:27017/mydb --eval `"db.mydata.update({}, {`$set : {v : 1}})`" --quiet"

В коллекции 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"

Есть идеи, что я могу делать не так?

Обновление:

Решение:

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

Ответы [ 3 ]

17 голосов
/ 25 января 2012

Попробуйте использовать одинарные кавычки вместо двойных кавычек вокруг оператора eval.

1 голос
/ 04 сентября 2013

К вашему сведению, это относится не только к PowerShell, оно применимо для запуска mongo на любой платформе (Windows, OSX и т. Д.)

0 голосов
/ 01 августа 2013

@ Уэс Фриман спас мой день!

Использование программы MongoDB Reference mongo

Используйте одинарные кавычки (например, ') для включения JavaScript, а также дополнительный JavaScript, необходимый для генерации этого вывода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...