Provided by: libmongoc-doc_1.26.0-1.1ubuntu2_all bug

SYNOPSIS

          typedef struct _mongoc_uri_t mongoc_uri_t;

DESCRIPTION

       mongoc_uri_t  provides  an  abstraction  on  top  of  the  MongoDB  connection  URI  format.  It provides
       standardized parsing as well as convenience methods for extracting useful  information  such  as  replica
       hosts or authorization information.

       See Connection String URI Reference on the MongoDB website for more information.

FORMAT

          mongodb[+srv]://                             <1>
             [username:password@]                      <2>
             host1                                     <3>
             [:port1]                                  <4>
             [,host2[:port2],...[,hostN[:portN]]]      <5>
             [/[database]                              <6>
             [?options]]                               <7>

       1. "mongodb"  is  the  specifier of the MongoDB protocol. Use "mongodb+srv" with a single service name in
          place of "host1" to specify the initial list of servers with an SRV record.

       2. An optional username and password.

       3. The only required part of the uri.  This specifies either  a  hostname,  IPv4  address,  IPv6  address
          enclosed in "[" and "]", or UNIX domain socket.

       4. An optional port number.  Defaults to :27017.

       5. Extra  optional  hosts  and  ports.  You would specify multiple hosts, for example, for connections to
          replica sets.

       6. The name of the database to authenticate if the connection string includes authentication credentials.
          If /database is not specified and the connection string includes credentials, defaults to the  'admin'
          database.

       7. Connection specific options.

       NOTE:
          Option     names     are    case-insensitive.    Do    not    repeat    the    same    option    (e.g.
          "mongodb://localhost/db?opt=value1&OPT=value2") since this may have unexpected results.

       The MongoDB C Driver exposes constants for each supported connection  option.  These  constants  make  it
       easier to discover connection options, but their string values can be used as well.

       For example, the following calls are equal.

          uri = mongoc_uri_new ("mongodb://localhost/?" MONGOC_URI_APPNAME "=applicationName");
          uri = mongoc_uri_new ("mongodb://localhost/?appname=applicationName");
          uri = mongoc_uri_new ("mongodb://localhost/?appName=applicationName");

REPLICA SET EXAMPLE

       To describe a connection to a replica set named 'test' with the following mongod hosts:

       • db1.example.com on port 27017db2.example.com on port 2500

       You would use a connection string that resembles the following.

          mongodb://db1.example.com,db2.example.com:2500/?replicaSet=test

SRV EXAMPLE

       If  you  have  configured an SRV record with a name like "_mongodb._tcp.server.example.com" whose records
       are a list of one or more MongoDB server hostnames, use a connection string like this:

          uri = mongoc_uri_new ("mongodb+srv://server.example.com/?replicaSet=rs&appName=applicationName");

       The driver prefixes the service name with "_mongodb._tcp.", then performs a DNS SRV query to resolve  the
       service name to one or more hostnames. If this query succeeds, the driver performs a DNS TXT query on the
       service name (without the "_mongodb._tcp" prefix) for additional URI options configured as TXT records.

       On  Unix,  the  MongoDB  C  Driver  relies  on  libresolv to look up SRV and TXT records. If libresolv is
       unavailable, then using a "mongodb+srv" URI will cause an error. If your libresolv lacks res_nsearch then
       the driver will fall back to res_search, which is not thread-safe.

IPV4 AND IPV6

       If connecting to a hostname that has both IPv4 and IPv6 DNS records, the  behavior  follows  RFC-6555.  A
       connection  to  the IPv6 address is attempted first. If IPv6 fails, then a connection is attempted to the
       IPv4 address. If the connection attempt to IPv6 does not complete within 250ms, then  IPv4  is  tried  in
       parallel.  Whichever succeeds connection first cancels the other. The successful DNS result is cached for
       10 minutes.

       As a consequence, attempts to connect to a mongod only listening on IPv4 may be delayed if there are both
       A (IPv4) and AAAA (IPv6) DNS records associated with the host.

       To avoid a delay, configure hostnames to match the MongoDB configuration.  That  is,  only  create  an  A
       record if the mongod is only listening on IPv4.

CONNECTION OPTIONS

─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  Constant                          Key                    Default                  Description
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  MONGOC_URI_RETRYREADS             retryreads             true                     If   "true"   and  the
                                                                                    server  is  a  MongoDB
                                                                                    3.6+       standalone,
                                                                                    replica    set,     or
                                                                                    sharded  cluster,  the
                                                                                    driver safely  retries
                                                                                    a read that failed due
                                                                                    to  a network error or
                                                                                    replica set failover.
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  MONGOC_URI_RETRYWRITES            retrywrites            true if  driver  built   If   "true"   and  the
                                                           w/ TLS                   server  is  a  MongoDB
                                                                                    3.6+  replica  set  or
                                                                                    sharded  cluster,  the
                                                                                    driver  safely retries
                                                                                    a  write  that  failed
                                                                                    due to a network error
                                                                                    or     replica     set
                                                                                    failover.         Only
                                                                                    inserts,   updates  of
                                                                                    single  documents,  or
                                                                                    deletes    of   single
                                                                                    documents are retried.
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  MONGOC_URI_APPNAME                appname                Empty (no appname)       The client application
                                                                                    name.  This  value  is
                                                                                    used  by  MongoDB when
                                                                                    it   logs   connection
                                                                                    information        and
                                                                                    profile   information,
                                                                                    such as slow queries.
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  MONGOC_URI_TLS                    tls                    Empty  (not  set, same   {true|false},
                                                           as false)                indicating if TLS must
                                                                                    be  used.  (See   also
                                                                                    mongoc_client_set_ssl_opts()
                                                                                    and
                                                                                    mongoc_client_pool_set_ssl_opts().)
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  MONGOC_URI_COMPRESSORS            compressors            Empty (no compressors)   Comma     separated     list     of
                                                                                    compressors,  if  any,  to  use  to
                                                                                    compress    the    wire    protocol
                                                                                    messages. Snappy,  zlib,  and  zstd
                                                                                    are     optional     build     time
                                                                                    dependencies,   and   enable    the
                                                                                    "snappy", "zlib", and "zstd" values
                                                                                    respectively.
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  MONGOC_URI_CONNECTTIMEOUTMS       connecttimeoutms       10,000 ms (10 seconds)   This  setting applies to new server
                                                                                    connections. It is also used as the
                                                                                    socket timeout for server discovery
                                                                                    and monitoring operations.
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  MONGOC_URI_SOCKETTIMEOUTMS        sockettimeoutms        300,000 ms (5 minutes)   The time in milliseconds to attempt
                                                                                    to send  or  receive  on  a  socket
                                                                                    before the attempt times out.
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  MONGOC_URI_REPLICASET             replicaset             Empty (no replicaset)    The  name  of  the Replica Set that
                                                                                    the driver should connect to.
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  MONGOC_URI_ZLIBCOMPRESSIONLEVEL   zlibcompressionlevel   -1                       When   the   MONGOC_URI_COMPRESSORS
                                                                                    includes    "zlib"   this   options
                                                                                    configures  the  zlib   compression
                                                                                    level,  when the zlib compressor is
                                                                                    used to compress client data.
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  MONGOC_URI_LOADBALANCED           loadbalanced           false                    If true, this indicates the  driver
                                                                                    is  connecting to a MongoDB cluster
                                                                                    behind a load balancer.
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  MONGOC_URI_SRVMAXHOSTS            srvmaxhosts            0                        If zero, the number of hosts in DNS
└─────────────────────────────────┴──────────────────────┴────────────────────────┴─────────────────────────────────────┘

       WARNING:
          Setting any of the *timeoutMS options above to either 0 or a negative  value  is  discouraged  due  to
          unspecified and inconsistent behavior.  The "default value" historically specified as a fallback for 0
          or  a negative value is NOT related to the default values for the *timeoutMS options documented above.
          The meaning of a timeout of 0 or a negative value may vary depending on the operation being  executed,
          even  when specified by the same URI option.  To specify the documented default value for a *timeoutMS
          option, use the MONGOC_DEFAULT_* constants defined in mongoc-client.h instead.

AUTHENTICATION OPTIONS

           ───────────────────────────────────────────────────────────────────────────────────────────────
             Constant                             Key                       Description
           ───────────────────────────────────────────────────────────────────────────────────────────────
             MONGOC_URI_AUTHMECHANISM             authmechanism             Specifies the  mechanism  to
                                                                            use  when  authenticating as
                                                                            the   provided   user.   See
                                                                            Authentication for supported
                                                                            values.
           ───────────────────────────────────────────────────────────────────────────────────────────────
             MONGOC_URI_AUTHMECHANISMPROPERTIES   authmechanismproperties   Certain       authentication
                                                                            mechanisms  have  additional
                                                                            options    that    can    be
                                                                            configured.  These   options
                                                                            should  be provided as comma
                                                                            separated
                                                                            option_key:option_value pair
                                                                            and       provided        as
                                                                            authMechanismProperties.
                                                                            Specifying      the     same
                                                                            option_key  multiple   times
                                                                            has undefined behavior.
           ───────────────────────────────────────────────────────────────────────────────────────────────
             MONGOC_URI_AUTHSOURCE                authsource                The  authSource  defines the
                                                                            database that should be used
                                                                            to authenticate  to.  It  is
                                                                            unnecessary  to provide this
                                                                            option the database name  is
                                                                            the  same  as  the  database
                                                                            used in the URI.
           ┌────────────────────────────────────┬─────────────────────────┬──────────────────────────────┐
           │                                    │                         │                              │
--
TLS OPTIONS│                                    │                         │                              │
┌──────────┼────────────────────────────────────┼─┬───────────────────────┼──────────────┬───────────────┼────────────────────────┐
├──────────┼────────────────────────────────────┼─┼───────────────────────┼──────────────┼───────────────┼────────────────────────┤
--

DEPRECATED SSL OPTIONS

       The following options have been deprecated and may be removed from future releases of libmongoc.
┌────────────────────────────────────────────┬─────────────────────────────────┬──────────────────────────────────────────┬─────────────────────────────┐
├────────────────────────────────────────────┼─────────────────────────────────┼──────────────────────────────────────────┼─────────────────────────────┤
├────────────────────────────────────────────┼─────────────────────────────────┼──────────────────────────────────────────┼─────────────────────────────┤
├────────────────────────────────────────────┼─────────────────────────────────┼──────────────────────────────────────────┼─────────────────────────────┤
├────────────────────────────────────────────┼─────────────────────────────────┼──────────────────────────────────────────┼─────────────────────────────┤
├────────────────────────────────────────────┼─────────────────────────────────┼──────────────────────────────────────────┼─────────────────────────────┤
├────────────────────────────────────────────┼─────────────────────────────────┼──────────────────────────────────────────┼─────────────────────────────┤
└────────────────────────────────────────────┴─────────────────────────────────┴──────────────────────────────────────────┴─────────────────────────────┘

SERVER DISCOVERY, MONITORING, AND SELECTION OPTIONS

       Clients in a mongoc_client_pool_t share a topology scanner that runs on a background thread.  The  thread
       wakes  every  heartbeatFrequencyMS (default 10 seconds) to scan all MongoDB servers in parallel. Whenever
       an application operation requires a server that is not known--for example, if there is no  known  primary
       and  your  application  attempts  an  insert--the  thread  rescans all servers every half-second. In this
       situation the pooled client waits up to serverSelectionTimeoutMS (default 30 seconds) for the  thread  to
       find    a    server    suitable    for    the    operation,   then   returns   an   error   with   domain
       MONGOC_ERROR_SERVER_SELECTION.

       Technically, the total time an operation may wait while a pooled client scans the topology is  controlled
       both  by  serverSelectionTimeoutMS  and connectTimeoutMS. The longest wait occurs if the last scan begins
       just at the end of the selection timeout, and a slow or down server requires the full connection  timeout
       before the client gives up.

       A  non-pooled  client  is  single-threaded.  Every  heartbeatFrequencyMS,  it blocks the next application
       operation while it does a parallel scan. This scan takes as long as needed to check the  slowest  server:
       roughly  connectTimeoutMS.  Therefore  the  default  heartbeatFrequencyMS  for single-threaded clients is
       greater than for pooled clients: 60 seconds.

       By default, single-threaded (non-pooled) clients scan only once when an operation requires a server  that
       is  not known. If you attempt an insert and there is no known primary, the client checks all servers once
       trying to find it, then succeeds or returns an error with domain  MONGOC_ERROR_SERVER_SELECTION.  But  if
       you  set  serverSelectionTryOnce to "false", the single-threaded client loops, checking all servers every
       half-second, until serverSelectionTimeoutMS.

       The total time an operation may wait for a single-threaded client to scan the topology is  determined  by
       connectTimeoutMS   in   the   try-once   case,   or   serverSelectionTimeoutMS  and  connectTimeoutMS  if
       serverSelectionTryOnce is set "false".
          ─────────────────────────────────────────────────────────────────────────────────────────────────
            Constant                              Key                        Description
          ─────────────────────────────────────────────────────────────────────────────────────────────────
            MONGOC_URI_HEARTBEATFREQUENCYMS       heartbeatfrequencyms       The interval between  server
                                                                             monitoring  checks. Defaults
                                                                             to 10,000ms (10 seconds)  in
                                                                             pooled      (multi-threaded)
                                                                             mode, 60,000ms (60  seconds)
                                                                             in      non-pooled      mode
                                                                             (single-threaded).
          ─────────────────────────────────────────────────────────────────────────────────────────────────
            MONGOC_URI_SERVERSELECTIONTIMEOUTMS   serverselectiontimeoutms   A timeout in milliseconds to
                                                                             block for  server  selection
                                                                             before      throwing      an
                                                                             exception.  The  default  is
                                                                             30,0000ms (30 seconds).
          ─────────────────────────────────────────────────────────────────────────────────────────────────
            MONGOC_URI_SERVERSELECTIONTRYONCE     serverselectiontryonce     If  "true", the driver scans
                                                                             the  topology  exactly  once
                                                                             after    server    selection
                                                                             fails, then either selects a
                                                                             server or returns an  error.
                                                                             If  it  is  false,  then the
                                                                             driver  repeatedly  searches
                                                                             for a suitable server for up
                                                                             to  serverSelectionTimeoutMS
                                                                             milliseconds (pausing a half
                                                                             second  between   attempts).
                                                                             The        default       for
                                                                             serverSelectionTryOnce    is
                                                                             "false"  for pooled clients,
                                                                             otherwise   "true".   Pooled
                                                                             clients               ignore
                                                                             serverSelectionTryOnce; they
                                                                             signal the thread to  rescan
                                                                             the      topology      every
                                                                             half-second            until
                                                                             serverSelectionTimeoutMS
                                                                             expires.
          ─────────────────────────────────────────────────────────────────────────────────────────────────
            MONGOC_URI_SOCKETCHECKINTERVALMS      socketcheckintervalms      Only   applies   to   single
                                                                             threaded   clients.   If   a
                                                                             socket  has  not  been  used
                                                                             within   this   time,    its
                                                                             connection is checked with a
                                                                             quick "hello" call before it
                                                                             is  used  again. Defaults to
                                                                             5,000ms (5 seconds).
          ─────────────────────────────────────────────────────────────────────────────────────────────────
            MONGOC_URI_DIRECTCONNECTION           directconnection           If   "true",   the    driver
                                                                             connects  to a single server
                                                                             directly   and   will    not
                                                                             monitor  additional servers.
                                                                             If   "false",   the   driver
                                                                             connects    based   on   the
                                                                             presence and  value  of  the
                                                                             replicaSet option.
          ┌─────────────────────────────────────┬──────────────────────────┬──────────────────────────────┐
          │                                     │                          │                              │
--
CONNECTIONPOOL OPTIONS                         │                          │                              │
--

WRITE CONCERN OPTIONS

                        ─────────────────────────────────────────────────────────────────────
                          Constant                Key          Description
                        ─────────────────────────────────────────────────────────────────────
                          MONGOC_URI_W            w            Determines the write concern
                                                               (guarantee). Valid values:

                                                                      • 0 = The driver will
                                                                        not     acknowledge
                                                                        write    operations
                                                                        but  will  pass  or
                                                                        handle any  network
                                                                        and  socket  errors
                                                                        that it receives to
                                                                        the client. If  you
                                                                        disable       write
                                                                        concern but  enable
                                                                        the    getLastError
                                                                        command’s w option,
                                                                        w overrides  the  w
                                                                        option.

                                                                      • 1  = Provides basic
                                                                        acknowledgement  of
                                                                        write   operations.
                                                                        By  specifying   1,
                                                                        you  require that a
                                                                        standalone   mongod
                                                                        instance,   or  the
                                                                        primary for replica
                                                                        sets,   acknowledge
                                                                        all           write
                                                                        operations.     For
                                                                        drivers    released
                                                                        after  the  default
                                                                        write       concern
                                                                        change, this is the
                                                                        default       write
                                                                        concern setting.

                                                                      • majority    =   For
                                                                        replica  sets,   if
                                                                        you   specify   the
                                                                        special    majority
                                                                        value  to w option,
                                                                        write    operations
                                                                        will   only  return
                                                                        successfully  after
                                                                        a  majority  of the
                                                                        configured  replica
                                                                        set   members  have
                                                                        acknowledged    the
                                                                        write operation.

                                                                      • n   =  For  replica
                                                                        sets,    if     you
                                                                        specify  a number n
                                                                        greater   than   1,
                                                                        operations     with
                                                                        this write  concern
                                                                        return only after n
                                                                        members  of the set
                                                                        have   acknowledged
                                                                        the  write.  If you
                                                                        set n to  a  number
                                                                        that   is   greater
                                                                        than the number  of
                                                                        available       set
                                                                        members or  members
                                                                        that   hold   data,
                                                                        MongoDB will  wait,
                                                                        potentially
                                                                        indefinitely,   for
                                                                        these  members   to
                                                                        become available.

                                                                      • tags  = For replica
                                                                        sets,    you    can
                                                                        specify  a  tag set
                                                                        to require that all
                                                                        members of the  set
                                                                        that   have   these
                                                                        tags     configured
                                                                        return confirmation
                                                                        of     the    write
                                                                        operation.
                        ─────────────────────────────────────────────────────────────────────
                          MONGOC_URI_WTIMEOUTMS   wtimeoutms   The time in milliseconds  to
                                                               wait   for   replication  to
                                                               succeed, as specified in the
                                                               w option, before timing out.
                                                               When wtimeoutMS is 0,  write
                                                               operations  will  never time
                                                               out.
                        ─────────────────────────────────────────────────────────────────────
                          MONGOC_URI_JOURNAL      journal      Controls    whether    write
                                                               operations  will  wait until
                                                               the mongod acknowledges  the
                                                               write operations and commits
                                                               the  data  to  the  on  disk
                                                               journal.

                                                                      • true    =   Enables
                                                                        journal      commit
                                                                        acknowledgement
                                                                        write      concern.
                                                                        Equivalent       to
                                                                        specifying      the
                                                                        getLastError
                                                                        command  with the j
                                                                        option enabled.

                                                                      • false  =  Does  not
                                                                        require that mongod
                                                                        commit        write
                                                                        operations  to  the
                                                                        journal      before
                                                                        acknowledging   the
                                                                        write    operation.
                                                                        This is the default
                                                                        option   for    the
                                                                        journal parameter.
                        ┌───────────────────────┬────────────┬──────────────────────────────┐
                        │                       │            │                              │
READ CONCERN OPTIONS    │                       │            │                              │
                  ┌─────┼───────────────────────┼────────────┼─────┬────────────────────────┼─────┐
--
READ PREFERENCE OPTIONS │                       │            │                              │
--
LEGACY OPTIONS │                                │                     │                              │
--
AUTHOR         │                                │                     │                              │
       MongoDB,│Inc                             │                     │                              │
               │                                │                     │                              │
COPYRIGHT      │                                │                     │                              │