2014-10-24 3 views
1

Я пытаюсь обновить поле из командной строки (не из Монго оболочки)Как обновить строку строки mongodb из командной строки?

mongo mydb --eval "db.users.update({}, { $set : { email : "[email protected]" } })" 

результатов в

Fri Oct 24 12:23:46.102 JavaScript execution failed: SyntaxError: Unexpected token : 

снова пытается

mongo mydb --eval "db.users.update({}, { $set : { email : \"[email protected]\" } })" 

же результаты

Fri Oct 24 12:24:05.559 JavaScript execution failed: SyntaxError: Unexpected token : 

Любая помощь для того же?

+0

был обновлен вопрос полностью. но благодаря Нилу Лунну за то, что он указал. теперь я обновил этот вопрос до предыдущего. и спросил другого здесь: http://stackoverflow.com/questions/26543376/how-to-pass-command-string-in-nodejs-childprocess-exec-function-to-update-a-stri – codeofnode

ответ

0

Это в основном просто цитирование. Оболочка, как правило, более щадящие внутренне, но делает ожидать действительного JSON иначе:

mongo mydb --eval "db.users.update({}, { '$set': { 'email' : '[email protected]' } })" 
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 protected]" } },{ "multi": true }) 
+0

Вы отвечаете абсолютно безупречно , Но на самом деле мое основное требование мало чем отличается от вопроса, который я задал ранее. повторите этот вопрос. – codeofnode

+0

@Koka Вы должны задать другой вопрос, а не изменять свой вопрос. Но зачем использовать командный процесс, когда вы можете просто использовать драйвер для подключения к базе данных и выпустить обновление? –

+0

Фактически у меня есть 100 других операций mongodb, чтобы выполнить более 10 баз данных, поэтому я подумал, что использование скрипта оболочки манго лучше. – codeofnode

Смежные вопросы