Docs Menu

Connection Guide

On this page

  • Connection URI
  • Other Ways to Connect to MongoDB
  • Connect to a MongoDB Server on Your Local Machine
  • Connect to a Replica Set
  • Connection Options

This guide shows you how to connect to a MongoDB instance or replica set deployment using the Go Driver.

The connection URI provides a set of instructions that the driver uses to connect to a MongoDB deployment. It instructs the driver on how it should connect to MongoDB and how it should behave while connected. The following example explains each part of a sample connection URI:

Each part of the connection string

In this example, we use mongodb for the protocol, which specifies the Standard Connection String Format. You can also use the DNS Seed List Connection Format if you want more flexibility of deployment and the ability to change the servers in rotation without reconfiguring clients.

Note

If your deployment is on MongoDB Atlas, see the Atlas driver connection guide and select Go from the language dropdown to retrieve your connection string.

The next part of the connection string contains your username and, if you are using password-based authentication, your password. Replace the value of user with your username and pass with your password. If you are using an authentication mechanism that does not require a username and password, omit this part of the connection URI.

The next part of the connection string specifies the hostname or IP address and port of your MongoDB instance. In the preceding example, we use sample.host as the hostname and 27017 as the port. Replace these values to point to your MongoDB instance.

The last part of the connection string specifies connection and authentication options. In the example, we set two connection options: maxPoolSize=20 and w=majority. For more information on connection options, read the Connection Options section of this guide.

The following code shows how you can use the sample connection URI in a client to connect to MongoDB.

package main
import (
"context"
"fmt"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"go.mongodb.org/mongo-driver/mongo/readpref"
)
// Connection URI
const uri = "mongodb://user:pass@sample.host:27017/?maxPoolSize=20&w=majority"
func main() {
// Create a new client and connect to the server
client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI(uri))
if err != nil {
panic(err)
}
defer func() {
if err = client.Disconnect(context.TODO()); err != nil {
panic(err)
}
}()
// Ping the primary
if err := client.Ping(context.TODO(), readpref.Primary()); err != nil {
panic(err)
}
fmt.Println("Successfully connected and pinged.")
}
Note

For information about connecting to Atlas Serverless, see the Serverless Instance Limitations page to identify the minimum driver version you need.

If you are connecting to a single MongoDB server instance or replica set that is not hosted on Atlas, see the following sections to find out how to connect.

If you need to run a MongoDB server on your local machine for development purposes, you need to complete the following:

  1. Download the Community or Enterprise version of MongoDB Server.
  2. Install and configure MongoDB Server.
  3. Start the server.
Important

Always secure your MongoDB server from malicious attacks. See our Security Checklist for a list of security recommendations.

After you successfully start your MongoDB server, specify your connection string in your driver connection code.

If your MongoDB Server is running locally, you can use the connection string "mongodb://localhost:<port>" where <port> is the port number you configured your server to listen for incoming connections.

If you need to specify a different hostname or IP address, see our Server Manual entry on Connection Strings.

To test whether you can connect to your server, replace the connection string with your localhost connection string in the preceding code example.

A MongoDB replica set deployment is a group of connected instances that store the same set of data. This configuration provides data redundancy and high data availability.

To connect to a replica set deployment, specify the hostname and port numbers of each instance, separated by commas, and the replica set name as the value of the replicaSet parameter in the connection string. In the following example, the hostnames are host1, host2, and host3, and the port numbers are all 27017. The replica set name is myRS.

mongodb://host1:27017,host2:27017,host3:27017/?replicaSet=myRS

When connecting to a replica set, the driver takes the following actions by default:

  • Discovers all replica set members when given the address of any one member.
  • Dispatches operations to the appropriate member, such as instructions to write against the primary.
Tip

You only need to specify one host to connect to a replica set. However, to ensure connectivity when the specified host is unavailable, you should provide the full list of hosts.

To force operations on the host designated in the connection URI, specify the directConnection option. Direct connections:

  • Don't support SRV strings.
  • Fail on writes when the specified host is not the primary.
  • Require you to specify a secondary read preference when the specified host isn't the primary.

This section explains several common MongoDB connection and authentication options. You can pass the connection options as parameters of the connection URI to specify the behavior of the client.

Option Name
Type
Default Value
Description
connectTimeoutMS
integer
30000
Specifies the number of milliseconds to wait before timeout on a TCP connection.
maxPoolSize
integer
100
Specifies the maximum number of connections that a connection pool may have at a given time.
replicaSet
string
null
Specifies the replica set name for the cluster. All nodes in the replica set must have the same replica set name, or the Client will not consider them as part of the set.
maxIdleTimeMS
integer
0
Specifies the maximum amount of time a connection can remain idle in the connection pool before being removed and closed. The default is 0, meaning a connection can remain unused indefinitely.
minPoolSize
integer
0
Specifies the minimum number of connections that the driver maintains in a single connection pool.
socketTimeoutMS
integer
0
Specifies the number of milliseconds to wait for a socket read or write to return before returning a network error. The 0 default value indicates that there is no timeout.
serverSelectionTimeoutMS
integer
30000
Specifies the number of milliseconds to wait to find an available, suitable server to execute an operation.
heartbeatFrequencyMS
integer
10000
Specifies the number of milliseconds to wait between periodic background server checks.
tls
boolean
false
Specifies whether to establish a Transport Layer Security (TLS) connection with the instance. This is automatically set to true when using a DNS seedlist (SRV) in the connection string. You can override this behavior by setting the value to false.
w
string or integer
null
Specifies the write concern. For more information on values, see the server documentation on Write Concern options.
directConnection
boolean
false
Specifies whether to force dispatch all operations to the host specified in the connection URI.

For a full list of connection options, see the ClientOptions API documentation.

Give Feedback
© 2021 MongoDB, Inc.

About

  • Careers
  • Legal Notices
  • Privacy Notices
  • Security Information
  • Trust Center
© 2021 MongoDB, Inc.