I am trying to update a mongoDb collection via ssh from a shell script but getting the below error :

MongoDB shell version: 2.6.4 connecting to: localhost:27017/b2b_tempdb 2017-12-05T11:04:51.153+0000 SyntaxError: Unexpected token :

Below is the full command :

ssh -n happy@localhost  " mongo --host localhost:27017  --authenticationDatabase admin b2b_tempdb --eval 'db=db.getSiblingDB( \"b2b_tempdb\" ); db[\"b2b_tempdb.activity.preferences\"].update({},{ $set: {'codeId':\"happy.l2l-09l2l121\"} }, {multi:true})' "

Kindly help me in getting it resolved . Thanks in advance for the help .

  • Why not you are using 'MongoDB Compass' . If you are using SSH. Are you using 'Local' or 'Remote' Database. Dec 5, 2017 at 12:05
  • Not allowed to use any separate product here in the project . am trying to connect to a remote machine where MongoDb is installed . Thanks Dec 5, 2017 at 12:14
  • what is your O.S environment? Dec 5, 2017 at 12:23

1 Answer 1


For me this works fine

ssh mongodb.domain.com "mongo --eval='db.getSiblingDB(\"testi\").empty.update({},{\$set:{key:1}},{multi:true})'"

The catch is \ before $ because otherways shell will "expand" that $set "enviroment variable", what of course don't exists.

  • As per OP the error shows that he is using "localhost". Dec 7, 2017 at 8:14
  • You can ssh to localhost and use localhost as host in mongo... No problem. So, my aswer works fine even I replace that mongodb.domain.com with localhost.
    – JJussi
    Dec 7, 2017 at 8:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.