Fork me on GitHub


We may connect to MongoDB by utilizing the mongoose.connect() method.


This is the minimum needed to connect the myapp database running locally on the default port (27017). We may also specify several more parameters in the uri depending on your environment:



The connect method also accepts an options object which will be passed on to the underlying driver.

mongoose.connect(uri, options);

The following option keys are available:

 db      - passed to the connection db instance
 server  - passed to the connection server instance(s)
 replset - passed to the connection ReplSet instance
 user    - username for authentication (if not specified in uri)
 pass    - password for authentication (if not specified in uri)

See the driver for more information about available options.

Note: The server option auto_reconnect is defaulted to true.

Note: The db option forceServerObjectId is set to false and cannot be overridden.

ReplicaSet Connections

The same method is used to connect to a replica set but instead of passing a single uri we pass a comma delimited list of uris.

mongoose.connect('mongodb://username:password@host:port/database,mongodb://username:password@host:port,mongodb://username:password@host:port' [, options]);

NOTE: The database need only be specified in one of the uris.

Multiple connections

So far we've seen how to connect to MongoDB using Mongoose's default connection. At times we may need multiple connections open to Mongo, each with different read/write settings, or maybe just to different databases for example. In these cases we can utilize mongoose.createConnection() which accepts all the arguments already discussed and returns a fresh connection for you.

var conn = mongoose.createConnection('uri,uri,uri...', options);

Connection pools

Each connection, whether created with mongoose.connect or mongoose.createConnection are all backed by an internal configurable connection pool defaulting to a size of 5. Adjust the pool size using your connection options:

mongoose.createConnection(uri, { server: { poolSize: 10 }});

Next Up

Now that we've covered connections, let's take a look at how we can break pieces of our functionality out into reusable and shareable plugins.