Package com.mongodb

Class ConnectionString

java.lang.Object
com.mongodb.ConnectionString

public class ConnectionString extends Object

Represents a Connection String. The Connection String describes the hosts to be used and options.

The format of the Connection String is:

   mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database.collection][?options]]
 
  • mongodb:// is a required prefix to identify that this is a string in the standard connection format.
  • username:password@ are optional. If given, the driver will attempt to login to a database after connecting to a database server. For some authentication mechanisms, only the username is specified and the password is not, in which case the ":" after the username is left off as well
  • host1 is the only required part of the connection string. It identifies a server address to connect to. Support for Unix domain sockets was added in 3.7. Note: The path must be urlencoded eg: mongodb://%2Ftmp%2Fmongodb-27017.sock and the jnr.unixsocket library installed.
  • :portX is optional and defaults to :27017 if not provided.
  • /database is the name of the database to login to and thus is only relevant if the username:password@ syntax is used. If not specified the "admin" database will be used by default.
  • ?options are connection options. Note that if database is absent there is still a / required between the last host and the ? introducing the options. Options are name=value pairs and the pairs are separated by "&". For backwards compatibility, ";" is accepted as a separator in addition to "&", but should be considered as deprecated.

An alternative format, using the mongodb+srv protocol, is:

   mongodb+srv://[username:password@]host[/[database][?options]]
 
  • mongodb+srv:// is a required prefix for this format.
  • username:password@ are optional. If given, the driver will attempt to login to a database after connecting to a database server. For some authentication mechanisms, only the username is specified and the password is not, in which case the ":" after the username is left off as well
  • host is the only required part of the URI. It identifies a single host name for which SRV records are looked up from a Domain Name Server after prefixing the host name with, by default, "_mongodb._tcp" ("mongodb" is the default SRV service name, but can be replaced via the srvServiceName query parameter), The host/port for each SRV record becomes the seed list used to connect, as if each one were provided as host/port pair in a URI using the normal mongodb protocol.
  • /database is the name of the database to login to and thus is only relevant if the username:password@ syntax is used. If not specified the "admin" database will be used by default.
  • ?options are connection options. Note that if database is absent there is still a / required between the last host and the ? introducing the options. Options are name=value pairs and the pairs are separated by "&". For backwards compatibility, ";" is accepted as a separator in addition to "&", but should be considered as deprecated. Additionally with the mongodb+srv protocol, TXT records are looked up from a Domain Name Server for the given host, and the text value of each one is prepended to any options on the URI itself. Because the last specified value for any option wins, that means that options provided on the URI will override any that are provided via TXT records.

The following options are supported (case insensitive):

Server Selection Configuration:

  • serverSelectionTimeoutMS=ms: How long the driver will wait for server selection to succeed before throwing an exception.
  • localThresholdMS=ms: When choosing among multiple MongoDB servers to send a request, the driver will only send that request to a server whose ping time is less than or equal to the server with the fastest ping time plus the local threshold.

Server Monitoring Configuration:

  • heartbeatFrequencyMS=ms: The frequency that the driver will attempt to determine the current state of each server in the cluster.
  • serverMonitoringMode=enum: The server monitoring mode, which defines the monitoring protocol to use. Enumerated values:
    • stream;
    • poll;
    • auto - the default.

Replica set configuration:

  • replicaSet=name: Implies that the hosts given are a seed list, and the driver will attempt to find all members of the set.

Connection Configuration:

  • ssl=true|false: Whether to connect using TLS.
  • tls=true|false: Whether to connect using TLS. Supersedes the ssl option
  • tlsInsecure=true|false: If connecting with TLS, this option enables insecure TLS connections. Currently this has the same effect of setting tlsAllowInvalidHostnames to true. Other mechanism for relaxing TLS security constraints must be handled in the application by customizing the SSLContext
  • sslInvalidHostNameAllowed=true|false: Whether to allow invalid host names for TLS connections.
  • tlsAllowInvalidHostnames=true|false: Whether to allow invalid host names for TLS connections. Supersedes the sslInvalidHostNameAllowed option
  • connectTimeoutMS=ms: How long a connection can take to be opened before timing out.
  • socketTimeoutMS=ms: How long a receive on a socket can take before timing out. This option is the same as SocketSettings.getReadTimeout(TimeUnit).
  • maxIdleTimeMS=ms: Maximum idle time of a pooled connection. A connection that exceeds this limit will be closed
  • maxLifeTimeMS=ms: Maximum life time of a pooled connection. A connection that exceeds this limit will be closed

Proxy Configuration:

  • proxyHost=string: The SOCKS5 proxy host to establish a connection through. It can be provided as a valid IPv4 address, IPv6 address, or a domain name. Required if either proxyPassword, proxyUsername or proxyPort are specified
  • proxyPort=n: The port number for the SOCKS5 proxy server. Must be a non-negative integer.
  • proxyUsername=string: Username for authenticating with the proxy server. Required if proxyPassword is specified.
  • proxyPassword=string: Password for authenticating with the proxy server. Required if proxyUsername is specified.

Connection pool configuration:

  • maxPoolSize=n: The maximum number of connections in the connection pool.
  • minPoolSize=n: The minimum number of connections in the connection pool.
  • waitQueueTimeoutMS=ms: The maximum duration to wait until either: an in-use connection becomes available, or a connection is created and begins to be established. See getMaxWaitTime() for more details.
  • maxConnecting=n: The maximum number of connections a pool may be establishing concurrently.

Write concern configuration:

  • safe=true|false
    • true: the driver ensures that all writes are acknowledged by the MongoDB server, or else throws an exception. (see also w and wtimeoutMS).
    • false: the driver does not ensure that all writes are acknowledged by the MongoDB server.
  • journal=true|false
    • true: the driver waits for the server to group commit to the journal file on disk.
    • false: the driver does not wait for the server to group commit to the journal file on disk.
  • w=wValue
    • The driver adds { w : wValue } to all write commands. Implies safe=true.
    • wValue is typically a number, but can be any string in order to allow for specifications like "majority"
  • wtimeoutMS=ms
    • The driver adds { wtimeout : ms } to all write commands. Implies safe=true.
    • Used in combination with w

Read preference configuration:

  • readPreference=enum: The read preference for this connection.
    • Enumerated values:
      • primary
      • primaryPreferred
      • secondary
      • secondaryPreferred
      • nearest
  • readPreferenceTags=string. A representation of a tag set as a comma-separated list of colon-separated key-value pairs, e.g. "dc:ny,rack:1". Spaces are stripped from beginning and end of all keys and values. To specify a list of tag sets, using multiple readPreferenceTags, e.g. readPreferenceTags=dc:ny,rack:1;readPreferenceTags=dc:ny;readPreferenceTags=
    • Note the empty value for the last one, which means match any secondary as a last resort.
    • Order matters when using multiple readPreferenceTags.
  • maxStalenessSeconds=seconds. The maximum staleness in seconds. For use with any non-primary read preference, the driver estimates the staleness of each secondary, based on lastWriteDate values provided in server hello responses, and selects only those secondaries whose staleness is less than or equal to maxStalenessSeconds. Not providing the parameter or explicitly setting it to -1 indicates that there should be no max staleness check. The maximum staleness feature is designed to prevent badly-lagging servers from being selected. The staleness estimate is imprecise and shouldn't be used to try to select "up-to-date" secondaries. The minimum value is either 90 seconds, or the heartbeat frequency plus 10 seconds, whichever is greatest.

Authentication configuration:

  • authMechanism=MONGO-CR|GSSAPI|PLAIN|MONGODB-X509|MONGODB-OIDC: The authentication mechanism to use if a credential was supplied. The default is unspecified, in which case the client will pick the most secure mechanism available based on the sever version. For the GSSAPI, MONGODB-X509, and MONGODB-OIDC mechanisms, no password is accepted, only the username.
  • authSource=string: The source of the authentication credentials. This is typically the database that the credentials have been created. The value defaults to the database specified in the path portion of the connection string. If the database is specified in neither place, the default value is "admin". This option is only respected when using the MONGO-CR mechanism (the default).
  • authMechanismProperties=PROPERTY_NAME:PROPERTY_VALUE,PROPERTY_NAME2:PROPERTY_VALUE2: This option allows authentication mechanism properties to be set on the connection string. Property values must be percent-encoded individually, when special characters are used, including , (comma), =, +, &, and %. The entire substring following the = should not itself be encoded.
  • gssapiServiceName=string: This option only applies to the GSSAPI mechanism and is used to alter the service name. Deprecated, please use authMechanismProperties=SERVICE_NAME:string instead.

Server Handshake configuration:

  • appName=string: Sets the logical name of the application. The application name may be used by the client to identify the application to the server, for use in server logs, slow query logs, and profile collection.

Compressor configuration:

  • compressors=string: A comma-separated list of compressors to request from the server. The supported compressors currently are 'zlib', 'snappy' and 'zstd'.
  • zlibCompressionLevel=integer: Integer value from -1 to 9 representing the zlib compression level. Lower values will make compression faster, while higher values will make compression better.

SRV configuration:

  • srvServiceName=string: The SRV service name. See ClusterSettings.getSrvServiceName() for details.
  • srvMaxHosts=number: The maximum number of hosts from the SRV record to connect to.

General configuration:

  • retryWrites=true|false. If true the driver will retry supported write operations if they fail due to a network error. Defaults to true.
  • retryReads=true|false. If true the driver will retry supported read operations if they fail due to a network error. Defaults to true.
  • uuidRepresentation=unspecified|standard|javaLegacy|csharpLegacy|pythonLegacy. See MongoClientSettings.getUuidRepresentation() for documentation of semantics of this parameter. Defaults to "javaLegacy", but will change to "unspecified" in the next major release.
  • directConnection=true|false. If true the driver will set the connection to be a direct connection to the host.
  • loadBalanced=true|false. If true the driver will assume that it's connecting to MongoDB through a load balancer.
Since:
3.0.0
MongoDB documentation
Connection String Format
  • Constructor Details

    • ConnectionString

      public ConnectionString(String connectionString)
      Creates a ConnectionString from the given string.
      Parameters:
      connectionString - the connection string
      Since:
      3.0
    • ConnectionString

      public ConnectionString(String connectionString, @Nullable DnsClient dnsClient)
      Creates a ConnectionString from the given string with the given DnsClient.

      If setting MongoClientSettings.getDnsClient() explicitly, care should be taken to call this constructor with the same DnsClient.

      Parameters:
      connectionString - the connection string
      dnsClient - the DNS client with which to resolve TXT record for the mongodb+srv protocol
      Since:
      4.10
      See Also:
  • Method Details

    • getUsername

      @Nullable public String getUsername()
      Gets the username
      Returns:
      the username
    • getPassword

      @Nullable public char[] getPassword()
      Gets the password
      Returns:
      the password
    • isSrvProtocol

      public boolean isSrvProtocol()
      Returns true if the connection string requires SRV protocol to resolve the host lists from the configured host.
      Returns:
      true if SRV protocol is required to resolve hosts.
    • getSrvMaxHosts

      @Nullable public Integer getSrvMaxHosts()
      Gets the maximum number of hosts to connect to when using SRV protocol.
      Returns:
      the maximum number of hosts to connect to when using SRV protocol. Defaults to null.
      Since:
      4.4
    • getSrvServiceName

      @Nullable public String getSrvServiceName()
      Gets the SRV service name.
      Returns:
      the SRV service name. Defaults to null in the connection string, but defaults to "mongodb" in ClusterSettings.
      Since:
      4.5
      See Also:
    • getHosts

      public List<String> getHosts()
      Gets the list of hosts
      Returns:
      the host list
    • getDatabase

      @Nullable public String getDatabase()
      Gets the database name
      Returns:
      the database name
    • getCollection

      @Nullable public String getCollection()
      Gets the collection name
      Returns:
      the collection name
    • isDirectConnection

      @Nullable public Boolean isDirectConnection()
      Indicates if the connection should be a direct connection
      Returns:
      true if a direct connection
      Since:
      4.1
    • isLoadBalanced

      @Nullable public Boolean isLoadBalanced()
      Indicates if the connection is through a load balancer.
      Returns:
      true if a load-balanced connection
      Since:
      4.3
    • getConnectionString

      public String getConnectionString()
      Get the unparsed connection string.
      Returns:
      the connection string
      Since:
      3.1
    • getCredential

      @Nullable public MongoCredential getCredential()
      Gets the credential or null if no credentials were specified in the connection string.
      Returns:
      the credentials in an immutable list
      Since:
      3.6
    • getReadPreference

      @Nullable public ReadPreference getReadPreference()
      Gets the read preference specified in the connection string.
      Returns:
      the read preference
    • getReadConcern

      @Nullable public ReadConcern getReadConcern()
      Gets the read concern specified in the connection string.
      Returns:
      the read concern
    • getWriteConcern

      @Nullable public WriteConcern getWriteConcern()
      Gets the write concern specified in the connection string.
      Returns:
      the write concern
    • getRetryWritesValue

      @Nullable public Boolean getRetryWritesValue()

      Gets whether writes should be retried if they fail due to a network error

      The name of this method differs from others in this class so as not to conflict with the now removed getRetryWrites() method, which returned a primitive boolean value, and didn't allow callers to differentiate between a false value and an unset value.
      Returns:
      the retryWrites value, or null if unset
      Since:
      3.9
      Since server release
      3.6
    • getRetryReads

      @Nullable public Boolean getRetryReads()

      Gets whether reads should be retried if they fail due to a network error

      Returns:
      the retryWrites value
      Since:
      3.11
      Since server release
      3.6
    • getMinConnectionPoolSize

      @Nullable public Integer getMinConnectionPoolSize()
      Gets the minimum connection pool size specified in the connection string.
      Returns:
      the minimum connection pool size
    • getMaxConnectionPoolSize

      @Nullable public Integer getMaxConnectionPoolSize()
      Gets the maximum connection pool size specified in the connection string.
      Returns:
      the maximum connection pool size
      See Also:
    • getMaxWaitTime

      @Nullable public Integer getMaxWaitTime()
      The maximum duration to wait until either: The reasons it is not always possible to create and start establishing a connection whenever there is no available connection:
      Returns:
      The value of the waitQueueTimeoutMS option, if specified.
      See Also:
    • getMaxConnectionIdleTime

      @Nullable public Integer getMaxConnectionIdleTime()
      Gets the maximum connection idle time specified in the connection string.
      Returns:
      the maximum connection idle time
    • getMaxConnectionLifeTime

      @Nullable public Integer getMaxConnectionLifeTime()
      Gets the maximum connection lifetime specified in the connection string.
      Returns:
      the maximum connection lifetime
    • getMaxConnecting

      @Nullable public Integer getMaxConnecting()
      Gets the maximum number of connections a pool may be establishing concurrently specified in the connection string.
      Returns:
      The maximum number of connections a pool may be establishing concurrently if the maxConnecting option is specified in the connection string, or null otherwise.
      Since:
      4.4
      See Also:
    • getConnectTimeout

      @Nullable public Integer getConnectTimeout()
      Gets the socket connect timeout specified in the connection string.
      Returns:
      the socket connect timeout
    • getSocketTimeout

      @Nullable public Integer getSocketTimeout()
      Gets the socket timeout specified in the connection string.
      Returns:
      the socket timeout
    • getSslEnabled

      @Nullable public Boolean getSslEnabled()
      Gets the SSL enabled value specified in the connection string.
      Returns:
      the SSL enabled value
    • getProxyHost

      @Nullable public String getProxyHost()
      Gets the SOCKS5 proxy host specified in the connection string.
      Returns:
      the proxy host value.
      Since:
      4.11
    • getProxyPort

      @Nullable public Integer getProxyPort()
      Gets the SOCKS5 proxy port specified in the connection string.
      Returns:
      the proxy port value.
      Since:
      4.11
    • getProxyUsername

      @Nullable public String getProxyUsername()
      Gets the SOCKS5 proxy username specified in the connection string.
      Returns:
      the proxy username value.
      Since:
      4.11
    • getProxyPassword

      @Nullable public String getProxyPassword()
      Gets the SOCKS5 proxy password specified in the connection string.
      Returns:
      the proxy password value.
      Since:
      4.11
    • getSslInvalidHostnameAllowed

      @Nullable public Boolean getSslInvalidHostnameAllowed()
      Gets the SSL invalidHostnameAllowed value specified in the connection string.
      Returns:
      the SSL invalidHostnameAllowed value
      Since:
      3.3
    • getRequiredReplicaSetName

      @Nullable public String getRequiredReplicaSetName()
      Gets the required replica set name specified in the connection string.
      Returns:
      the required replica set name
    • getServerSelectionTimeout

      @Nullable public Integer getServerSelectionTimeout()
      Returns:
      the server selection timeout (in milliseconds), or null if unset
      Since:
      3.3
    • getLocalThreshold

      @Nullable public Integer getLocalThreshold()
      Returns:
      the local threshold (in milliseconds), or null if unset since 3.3
    • getHeartbeatFrequency

      @Nullable public Integer getHeartbeatFrequency()
      Returns:
      the heartbeat frequency (in milliseconds), or null if unset since 3.3
    • getServerMonitoringMode

      @Nullable public ServerMonitoringMode getServerMonitoringMode()
      The server monitoring mode, which defines the monitoring protocol to use.

      Default is ServerMonitoringMode.AUTO.

      Returns:
      The ServerMonitoringMode, or null if unset and the default is to be used.
      Since:
      5.1
      See Also:
    • getApplicationName

      @Nullable public String getApplicationName()
      Gets the logical name of the application. The application name may be used by the client to identify the application to the server, for use in server logs, slow query logs, and profile collection.

      Default is null.

      Returns:
      the application name, which may be null
      Since:
      3.4
      Since server release
      3.4
    • getCompressorList

      public List<MongoCompressor> getCompressorList()
      Gets the list of compressors.
      Returns:
      the non-null list of compressors
      Since:
      3.6
    • getUuidRepresentation

      @Nullable public UuidRepresentation getUuidRepresentation()
      Gets the UUID representation.

      Default is null.

      Returns:
      the UUID representation, which may be null if it was unspecified
      Since:
      3.12
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object