How to execute mongo commands through shell scripts?
You can also evaluate a command using the --eval
flag, if it is just a single command.
mongo --eval "printjson(db.serverStatus())"
Please note: if you are using Mongo operators, starting with a $ sign, you'll want to surround the eval argument in single quotes to keep the shell from evaluating the operator as an environment variable:
mongo --eval 'db.mycollection.update({"name":"foo"},{$set:{"this":"that"}});' myDbName
Otherwise you may see something like this:
mongo --eval "db.test.update({\"name\":\"foo\"},{$set:{\"this\":\"that\"}});"> E QUERY SyntaxError: Unexpected token :
Put your mongo script into a .js
file.
Then execute mongo < yourFile.js
Ex:
demo.js //file has your script
use sample //db nameshow collections
keep this file in "c:\db-scripts"
Then in cmd prompt go to "c:\db-scripts"
C:\db-scripts>mongo < demo.js
This will execute the code in mongo and shows the output
C:\db-scripts>mongo < demo.jsMongo shell version: 3.0.4Connecting to: testswitched to db sampleusers //collection nametasks //collection namebyeC:\db-scripts>