MongoDB Connection String URI Format: Explained with Examples

Updated: February 4, 2024 By: Guest Contributor Post a comment

Introduction

Understanding MongoDB’s connection strings is essential for developers working with this popular NoSQL database. A connection string, or Uniform Resource Identifier (URI), specifies the client how to connect to the database. This guide delves into the structure of MongoDB connection strings and provides practical examples to illustrate their use.

The Fundamentals

MongoDB connection strings are used to define the connection parameters between a MongoDB client and the database instance. These strings are composed following a specific URI format, making it easy to configure connections using different programming languages and libraries. MongoDB supports two URI connection formats: the Standard Connection String Format and the MongoDB URI Connection Scheme.

Standard Connection String Format

mongodb://username:password@host:port/database

This is the simplest form of a MongoDB connection string. It consists of the protocol (mongodb://), followed by the user credentials (username and password), the host (or multiple hosts), the port, and finally the database name to connect to.

MongoDB URI Connection Scheme

mongodb+srv://username:password@server/database

In the MongoDB+srv scheme, the DNS entries for the server are used to automatically discover the entire deployment, making the process more streamlined and less prone to errors. The +srv suffix indicates that SRV records will be used for automatic discovery.

Example 1: Basic Connection String Usage

Let’s start with a simple example of connecting to a MongoDB database using the standard connection string:

const MongoClient = require('mongodb').MongoClient;
const uri = "mongodb://username:password@localhost:27017/mydb";
const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });
client.connect(err => {
  if(err) throw err;
  console.log('Successfully connected to the database.');
  // perform operations
  client.close();
});

This example uses the Node.js MongoDB driver to establish a connection to a local MongoDB database. The output should indicate that the connection has been successfully established.

Example 2: Using MongoDB+srv Connection String

Move to a more sophisticated example that employs the MongoDB+srv connection string for cloud-based databases such as MongoDB Atlas:

const MongoClient = require('mongodb').MongoClient;
const uri = "mongodb+srv://username:[email protected]/mydb";
const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });
client.connect(err => {
  if(err) throw err;
  console.log('Successfully connected to MongoDB Atlas.');
  // perform operations
  client.close();
});

Here, we are connecting to a MongoDB Atlas cluster using the +srv connection string which automatically resolves the cluster’s entire network topology. Again, successful database connection is the desired outcome.

Advanced Connection String Options

For developers looking to further customize their MongoDB connections, there are several parameters that can be added to the connection string:

  • replicaSet: The name of the replica set to connect to.
  • authSource: Specifies the database name associated with the user’s credentials.
  • ssl: If true, connects over SSL.
  • connectTimeoutMS and socketTimeoutMS: Specify connection and socket timeouts in milliseconds.
  • readPreference: Defines the read preference.

Example 3: Advanced URI with Options

Now, let’s look at an advanced connection string that includes several options:

mongodb://username:password@host1:27017,host2:27018,host3:27019/mydb?replicaSet=myReplicaSet&authSource=admin&ssl=true&connectTimeoutMS=300000&socketTimeoutMS=30000&readPreference=primaryPreferred

This connection string connects to a multi-host MongoDB instance (featuring a replica set) with custom connection and socket timeouts, SSL, and a specified read preference, showcasing the flexibility that MongoDB’s connection strings allow when setting up connections to complex deployments.

Conclusion

MongoDB’s connection string format is a versatile tool for developers, allowing for easy and flexible database connections. By understanding and applying the various components and options of MongoDB connection strings, developers can efficiently connect to and work with MongoDB databases in any environment.