Mongoose with ReplicaSet on Atlas Mongoose with ReplicaSet on Atlas mongoose mongoose

Mongoose with ReplicaSet on Atlas


ON MONGODB 3.4.x

I resolved this issue putting the 'options' value directly in 'uri' string, according to documentation (http://mongoosejs.com/docs/connections.html) on 'Replica Set Connections' section.

// connection string using mongoose:var uri = 'mongodb://MY_USER:MY_PASSWORD@' +  'MY_SERVER-shard-00-00-clv3h.mongodb.net:27017,' +  'MY_SERVER-shard-00-01-clv3h.mongodb.net:27017,' +  'MY_SERVER-shard-00-02-clv3h.mongodb.net:27017/MY_DATABASE' +  'ssl=true&replicaSet=MY_REPLICASET_NAME-shard-0&authSource=MY_ADMIN_DATABASE';mongoose.connect(uri);var db = mongoose.connection;

Now, it is working fine!

NOTICE WITH MONGODB 3.6

On MongoDB Atlas using the version 3.6.x, the connection string changed to use a DNS server making the link shorter.

mongodb+srv://MY_USER:MY_PASSWORD@MY_SERVER.mongodb.net/MY_DATABASE

...if you use this connection string in your application, this will connect with success but it will be able to read and write only with atlas users with higher privilegies access (atlasAdmin, readWriteAnyDatabase...).

To you work with an specific user with privilege only to readWrite your database, you will need to keep the same connection string used in MongoDB 3.4 because the mongoose not recognized the DNS option (mongodb+srv).

P.S. all the new resources from MongoDB 3.6.x will continue working normally!


Add username and password to database connection

mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

Standard Connection String Format