On this page
Write Scripts for the mongo Shell
You can write scripts for the mongo shell in JavaScript that manipulate data in MongoDB or perform administrative operation.
This tutorial provides an introduction to writing JavaScript that uses the mongo shell to access MongoDB.
Opening New Connections
From the mongo shell or from a JavaScript file, you can instantiate database connections using the Mongo() constructor:
new Mongo()
new Mongo(<host>)
new Mongo(<host:port>)
Consider the following example that instantiates a new connection to the MongoDB instance running on localhost on the default port and sets the global db variable to myDatabase using the getDB() method:
conn = new Mongo();
db = conn.getDB("myDatabase");
If connecting to a MongoDB instance that enforces access control, you can use the db.auth() method to authenticate.
Additionally, you can use the connect() method to connect to the MongoDB instance. The following example connects to the MongoDB instance that is running on localhost with the non-default port 27020 and set the global db variable:
db = connect("localhost:27020/myDatabase");
See also
Differences Between Interactive and Scripted mongo
When writing scripts for the mongo shell, consider the following:
To set the
dbglobal variable, use thegetDB()method or theconnect()method. You can assign the database reference to a variable other thandb.Write operations in the
mongoshell use a write concern of { w: 1 } by default. If performing bulk operations, use theBulk()methods. See Write Method Acknowledgements for more information.You cannot use any shell helper (e.g.
use <dbname>,show dbs, etc.) inside the JavaScript file because they are not valid JavaScript.The following table maps the most common
mongoshell helpers to their JavaScript equivalents.Shell Helpers JavaScript Equivalents show dbs,show databasesdb.adminCommand('listDatabases')use <db>db = db.getSiblingDB('<db>')show collectionsdb.getCollectionNames()show usersdb.getUsers()show rolesdb.getRoles({showBuiltinRoles: true})show log <logname>db.adminCommand({ 'getLog' : '<logname>' })show logsdb.adminCommand({ 'getLog' : '*' })itcursor = db.collection.find() if ( cursor.hasNext() ){ cursor.next(); }In interactive mode,
mongoprints the results of operations including the content of all cursors. In scripts, either use the JavaScriptprint()function or themongospecificprintjson()function which returns formatted JSON.
Scripting
From the system prompt, use mongo to evaluate JavaScript.
--eval option
Use the --eval option to mongo to pass the shell a JavaScript fragment, as in the following:
mongo test --eval "printjson(db.getCollectionNames())"
This returns the output of db.getCollectionNames() using the mongo shell connected to the mongod or mongos instance running on port 27017 on the localhost interface.
Execute a JavaScript file
You can specify a .js file to the mongo shell, and mongo will execute the JavaScript directly. Consider the following example:
mongo localhost:27017/test myjsfile.js
This operation executes the myjsfile.js script in a mongo shell that connects to the test database on the mongod instance accessible via the localhost interface on port 27017.
Alternately, you can specify the mongodb connection parameters inside of the javascript file using the Mongo() constructor. See Opening New Connections for more information.
You can execute a .js file from within the mongo shell, using the load() function, as in the following:
load("myjstest.js")
This function loads and executes the myjstest.js fil