1MONGOC_URI_T(3)                    libmongoc                   MONGOC_URI_T(3)
2
3
4

NAME

6       mongoc_uri_t - mongoc_uri_t
7

SYNOPSIS

9          typedef struct _mongoc_uri_t mongoc_uri_t;
10

DESCRIPTION

12       mongoc_uri_t  provides  an abstraction on top of the MongoDB connection
13       URI format. It provides standardized parsing  as  well  as  convenience
14       methods  for  extracting  useful  information  such as replica hosts or
15       authorization information.
16
17       See Connection String URI Reference on the  MongoDB  website  for  more
18       information.
19

FORMAT

21          mongodb[+srv]://                             <1>
22             [username:password@]                      <2>
23             host1                                     <3>
24             [:port1]                                  <4>
25             [,host2[:port2],...[,hostN[:portN]]]      <5>
26             [/[database]                              <6>
27             [?options]]                               <7>
28
29       1. "mongodb"  is  the  specifier  of  the  MongoDB  protocol. Use "mon‐
30          godb+srv" with a single service name in place of "host1" to  specify
31          the initial list of servers with an SRV record.
32
33       2. An optional username and password.
34
35       3. The  only  required  part of the uri.  This specifies either a host‐
36          name, IPv4 address, IPv6 address enclosed in "[" and  "]",  or  UNIX
37          domain socket.
38
39       4. An optional port number.  Defaults to :27017.
40
41       5. Extra  optional  hosts and ports.  You would specify multiple hosts,
42          for example, for connections to replica sets.
43
44       6. The name of the database to authenticate if  the  connection  string
45          includes  authentication credentials.  If /database is not specified
46          and the connection string  includes  credentials,  defaults  to  the
47          'admin' database.
48
49       7. Connection specific options.
50
51       NOTE:
52          Option  names  are  case-insensitive.  Do not repeat the same option
53          (e.g. "mongodb://localhost/db?opt=value1&OPT=value2") since this may
54          have unexpected results.
55
56       The  MongoDB  C  Driver exposes constants for each supported connection
57       option. These constants make it easier to discover connection  options,
58       but their string values can be used as well.
59
60       For example, the following calls are equal.
61
62          uri = mongoc_uri_new ("mongodb://localhost/?" MONGOC_URI_APPNAME "=applicationName");
63          uri = mongoc_uri_new ("mongodb://localhost/?appname=applicationName");
64          uri = mongoc_uri_new ("mongodb://localhost/?appName=applicationName");
65

REPLICA SET EXAMPLE

67       To describe a connection to a replica set named 'test' with the follow‐
68       ing mongod hosts:
69
70       · db1.example.com on port 27017
71
72       · db2.example.com on port 2500
73
74       You would use a connection string that resembles the following.
75
76          mongodb://db1.example.com,db2.example.com:2500/?replicaSet=test
77

SRV EXAMPLE

79       If  you  have  configured  an  SRV  record  with  a  name  like  "_mon‐
80       godb._tcp.server.example.com"  whose  records are a list of one or more
81       MongoDB server hostnames, use a connection string like this:
82
83          uri = mongoc_uri_new ("mongodb+srv://server.example.com/?replicaSet=rs&appName=applicationName");
84
85       The driver prefixes the service name with "_mongodb._tcp.",  then  per‐
86       forms  a DNS SRV query to resolve the service name to one or more host‐
87       names. If this query succeeds, the driver performs a DNS TXT  query  on
88       the  service  name  (without the "_mongodb._tcp" prefix) for additional
89       URI options configured as TXT records.
90
91       On Unix, the MongoDB C Driver relies on libresolv to look  up  SRV  and
92       TXT  records.  If  libresolv is unavailable, then using a "mongodb+srv"
93       URI will cause an error. If your libresolv lacks res_nsearch  then  the
94       driver will fall back to res_search, which is not thread-safe.
95

IPV4 AND IPV6

97       If  connecting  to  a hostname that has both IPv4 and IPv6 DNS records,
98       the behavior follows RFC-6555. A connection  to  the  IPv6  address  is
99       attempted  first.  If IPv6 fails, then a connection is attempted to the
100       IPv4 address. If the connection  attempt  to  IPv6  does  not  complete
101       within  250ms,  then IPv4 is tried in parallel. Whichever succeeds con‐
102       nection first cancels the other. The successful DNS  result  is  cached
103       for 10 minutes.
104
105       As  a  consequence,  attempts  to connect to a mongod only listening on
106       IPv4 may be delayed if there are both A  (IPv4)  and  AAAA  (IPv6)  DNS
107       records associated with the host.
108
109       To  avoid  a delay, configure hostnames to match the MongoDB configura‐
110       tion. That is, only create an A record if the mongod is only  listening
111       on IPv4.
112

CONNECTION OPTIONS

114      ┌────────────────────┬──────────────────┬────────────────────────────────┐
115      │Constant            │ Key              │ Description                    │
116      ├────────────────────┼──────────────────┼────────────────────────────────┤
117      │MON‐                │ retryreads       │ If "true"  and  the            │
118      │GOC_URI_RETRYREADS  │                  │ server is a MongoDB            │
119      │                    │                  │ 3.6+    standalone,            │
120      │                    │                  │ replica   set,   or            │
121      │                    │                  │ sharded    cluster,            │
122      │                    │                  │ the  driver  safely            │
123      │                    │                  │ retries a read that            │
124      │                    │                  │ failed   due  to  a            │
125      │                    │                  │ network  error   or            │
126      │                    │                  │ replica         set            │
127      │                    │                  │ failover.                      │
128      └────────────────────┴──────────────────┴────────────────────────────────┘
129
130
131
132
133
134
135
136
137      │MONGOC_URI_RETRY‐   │ retrywrites      │ If  "true"  and the            │
138      │WRITES              │                  │ server is a MongoDB            │
139      │                    │                  │ 3.6+ replica set or            │
140      │                    │                  │ sharded    cluster,            │
141      │                    │                  │ the  driver  safely            │
142      │                    │                  │ retries   a   write            │
143      │                    │                  │ that  failed due to            │
144      │                    │                  │ a network error  or            │
145      │                    │                  │ replica         set            │
146      │                    │                  │ failover.      Only            │
147      │                    │                  │ inserts, updates of            │
148      │                    │                  │ single   documents,            │
149      │                    │                  │ or  deletes of sin‐            │
150      │                    │                  │ gle  documents  are            │
151      │                    │                  │ retried.                       │
152      ├────────────────────┼──────────────────┼────────────────────────────────┤
153      │MONGOC_URI_APPNAME  │ appname          │ The client applica‐            │
154      │                    │                  │ tion   name.   This            │
155      │                    │                  │ value  is  used  by            │
156      │                    │                  │ MongoDB   when   it            │
157      │                    │                  │ logs     connection            │
158      │                    │                  │ information     and            │
159      │                    │                  │ profile    informa‐            │
160      │                    │                  │ tion, such as  slow            │
161      │                    │                  │ queries.                       │
162      ├────────────────────┼──────────────────┼────────────────────────────────┤
163      │MONGOC_URI_TLS      │ tls              │ {true|false}, indi‐            │
164      │                    │                  │ cating if TLS  must            │
165      │                    │                  │ be  used. (See also            │
166      │                    │                  │ mon‐                           
167      │                    │                  │ goc_client_set_ssl_opts        
168      │                    │                  │ and            mon‐            
169      │                    │                  │ goc_client_pool_set_ssl_opts.) │
170      ├────────────────────┼──────────────────┼────────────────────────────────┤
171      │MONGOC_URI_COMPRES‐ │ compressors      │ Comma  separated  list of com‐ │
172      │SORS                │                  │ pressors, if any,  to  use  to │
173      │                    │                  │ compress   the  wire  protocol │
174      │                    │                  │ messages.  Snappy,  zlib,  and │
175      │                    │                  │ zstd  are  optional build time │
176      │                    │                  │ dependencies, and  enable  the │
177      │                    │                  │ "snappy",  "zlib",  and "zstd" │
178      │                    │                  │ values respectively.  Defaults │
179      │                    │                  │ to empty (no compressors).     │
180      ├────────────────────┼──────────────────┼────────────────────────────────┤
181      │MONGOC_URI_CONNECT‐ │ connecttimeoutms │ This setting  applies  to  new │
182      │TIMEOUTMS           │                  │ server connections. It is also │
183      │                    │                  │ used as the socket timeout for │
184      │                    │                  │ server  discovery and monitor‐ │
185      │                    │                  │ ing operations. The default is │
186      │                    │                  │ 10,000 ms (10 seconds).        │
187      ├────────────────────┼──────────────────┼────────────────────────────────┤
188      │MONGOC_URI_SOCKET‐  │ sockettimeoutms  │ The time  in  milliseconds  to │
189      │TIMEOUTMS           │                  │ attempt  to send or receive on │
190      │                    │                  │ a socket  before  the  attempt │
191      │                    │                  │ times   out.  The  default  is │
192      │                    │                  │ 300,000 (5 minutes).           │
193      ├────────────────────┼──────────────────┼────────────────────────────────┤
194      │MONGOC_URI_REPLI‐   │ replicaset       │ The  name  of  the Replica Set │
195      │CASET               │                  │ that the driver should connect │
196      │                    │                  │ to.                            │
197      └────────────────────┴──────────────────┴────────────────────────────────┘
198
199
200
201
202
203
204
205      │MONGOC_URI_ZLIBCOM‐ │ zlibcompression‐ │ When  the  MONGOC_URI_COMPRES‐ │
206      │PRESSIONLEVEL       │ level            │ SORS  includes   "zlib"   this │
207      │                    │                  │ options  configures  the  zlib │
208      │                    │                  │ compression  level,  when  the │
209      │                    │                  │ zlib  compressor  is  used  to │
210      │                    │                  │ compress client data.          │
211      └────────────────────┴──────────────────┴────────────────────────────────┘
212
213       Setting any of the *timeoutMS options above to 0 will be interpreted as
214       "use the default value".
215

AUTHENTICATION OPTIONS

217        ┌────────────────────┬────────────────────┬─────────────────────────┐
218        │Constant            │ Key                │ Description             │
219        ├────────────────────┼────────────────────┼─────────────────────────┤
220        │MONGOC_URI_AUTH‐    │ authmechanism      │ Specifies the mech‐     │
221        │MECHANISM           │                    │ anism  to  use when     │
222        │                    │                    │ authenticating   as     │
223        │                    │                    │ the  provided user.     │
224        │                    │                    │ See  Authentication     │
225        │                    │                    │ for  supported val‐     │
226        │                    │                    │ ues.                    │
227        ├────────────────────┼────────────────────┼─────────────────────────┤
228        │MONGOC_URI_AUTH‐    │ authmechanismprop‐ │ Certain authentica‐     │
229        │MECHANISMPROPERTIES │ erties             │ tion     mechanisms     │
230        │                    │                    │ have     additional     │
231        │                    │                    │ options that can be     │
232        │                    │                    │ configured.   These     │
233        │                    │                    │ options  should  be     │
234        │                    │                    │ provided  as  comma     │
235        │                    │                    │ separated               │
236        │                    │                    │ option_key:option_value │
237        │                    │                    │ pair  and  provided     │
238        │                    │                    │ as   authMechanism‐     │
239        │                    │                    │ Properties.             │
240        ├────────────────────┼────────────────────┼─────────────────────────┤
241        │MONGOC_URI_AUTH‐    │ authsource         │ The authSource  defines │
242        │SOURCE              │                    │ the    database    that │
243        │                    │                    │ should   be   used   to │
244        │                    │                    │ authenticate  to. It is │
245        │                    │                    │ unnecessary to  provide │
246        │                    │                    │ this  option  the data‐ │
247        │                    │                    │ base name is  the  same │
248        │                    │                    │ as the database used in │
249        │                    │                    │ the URI.                │
250        └────────────────────┴────────────────────┴─────────────────────────┘
251
252   Mechanism Properties
253           ┌────────────────────┬───────────────────┬─────────────────────┐
254           │Constant            │ Key               │ Description         │
255           ├────────────────────┼───────────────────┼─────────────────────┤
256           │MONGOC_URI_CANONI‐  │ canonicalizehost‐ │ Use  the  canonical │
257           │CALIZEHOSTNAME      │ name              │ hostname   of   the │
258           │                    │                   │ service,     rather │
259           │                    │                   │ than its configured │
260           │                    │                   │ alias, when authen‐ │
261           │                    │                   │ ticating       with │
262           │                    │                   │ Cyrus-SASL     Ker‐ │
263           │                    │                   │ beros.              │
264           ├────────────────────┼───────────────────┼─────────────────────┤
265           │MONGOC_URI_GSSAPIS‐ │ gssapiservicename │ Use     alternative │
266           │ERVICENAME          │                   │ service  name.  The │
267           │                    │                   │ default is mongodb. │
268           └────────────────────┴───────────────────┴─────────────────────┘
269

TLS OPTIONS

271          ──────────────────────────────────────────────────────────────────
272           Constant              Key                   Description
273          ──────────────────────────────────────────────────────────────────
274           MONGOC_URI_TLSCER‐    tlscertificatekey‐    Path to PEM format‐
275           TIFICATEKEYFILE       file                  ted   Private  Key,
276                                                       with   its   Public
277                                                       Certificate    con‐
278                                                       catenated  at   the
279                                                       end.
280          ──────────────────────────────────────────────────────────────────
281           MONGOC_URI_TLSCER‐    tlscertificatekey‐    The   password,  if
282           TIFICATEKEYPASSWORD   password              any,  to   use   to
283                                                       unlock    encrypted
284                                                       Private Key.
285          ──────────────────────────────────────────────────────────────────
286           MONGOC_URI_TLSCER‐    tlscertificateau‐     One,  or  a  bundle
287           TIFICATEAUTHORITY‐    thorityfile           of,     Certificate
288           FILE                                        Authorities    whom
289                                                       should  be  consid‐
290                                                       ered to be trusted.
291          ──────────────────────────────────────────────────────────────────
292           MONGOC_URI_TLSAL‐     tlsallowinvalidcer‐   Accept  and  ignore
293           LOWINVALIDCERTIFI‐    tificates             certificate verifi‐
294           CATES                                       cation errors (e.g.
295                                                       untrusted   issuer,
296                                                       expired, etc etc)
297          ──────────────────────────────────────────────────────────────────
298           MONGOC_URI_TLSAL‐     tlsallowinvalid‐      Ignore     hostname
299           LOWINVALIDHOSTNAMES   hostnames             verification of the
300                                                       certificate   (e.g.
301                                                       Man  In The Middle,
302                                                       using  valid   cer‐
303                                                       tificate,       but
304                                                       issued for  another
305                                                       hostname)
306          ──────────────────────────────────────────────────────────────────
307           MONGOC_URI_TLSINSE‐   tlsinsecure           {true|false}, indi‐
308           CURE                                        cating  if insecure
309                                                       TLS options  should
310                                                       be  used. Currently
311                                                       this  implies  MON‐
312                                                       GOC_URI_TLSALLOWIN‐
313                                                       VALIDCERTIFICATES
314                                                       and            MON‐
315                                                       GOC_URI_TLSALLOWIN‐
316                                                       VALIDHOSTNAMES.
317          ┌────────────────────┬─────────────────────┬─────────────────────┐
318          │                    │                     │                     │
319       See│mongoc_ssl_opt_t for│details about these o│ptions and about build│ing
320       lib│mongoc with SSL suppo│rt.                   │                     │
321          │                    │                     │                     │

DEPRECATED│SSL OPTIONS │ │ │

323       The│following options ha│ve been deprecated  an│d  may  be  removed  f│rom
324       fut│ure releases of libmo│ngoc.                 │                     │
325          │                    │                     │                     │
326   ┌──────┼───────────────┬────┼─────────────┬───────┼──────────┬──────────┼───────┐
327   │Consta│nt              │ Key│             │ Deprec│ated For   │ Key      │       │
328   ├──────┼───────────────┼────┼─────────────┼───────┼──────────┼──────────┼───────┤
329   │MONGOC│_URI_SSL        │ ssl│             │ MONGOC│_URI_TLS   │ tls      │       │
330   ├──────┼───────────────┼────┼─────────────┼───────┼──────────┼──────────┼───────┤
331   │MON‐  │               │ ssl│clientcer‐    │ MON‐  │          │ tlscertif│i‐      │
332   │GOC_UR│I_SSLCLIENTCER‐ │ tif│icatekeyfile  │ GOC_UR│I_TLSCER‐  │ catekeyfi│le      │
333   │TIFICA│TEKEYFILE       │    │             │ TIFICA│TEKEYFILE  │          │       │
334   ├──────┼───────────────┼────┼─────────────┼───────┼──────────┼──────────┼───────┤
335   │MON‐  │               │ ssl│clientcer‐    │ MON‐  │          │ tlscertif│i‐      │
336   │GOC_UR│I_SSLCLIENTCER‐ │ tif│icatekeypass‐ │ GOC_UR│I_TLSCER‐  │ catekeypa│ssword  │
337   │TIFICA│TEKEYPASSWORD   │ wor│d             │ TIFICA│TEKEYPASS‐ │          │       │
338   │      │               │    │             │ WORD  │          │          │       │
339   └──────┴───────────────┴────┴─────────────┴───────┴──────────┴──────────┴───────┘
340
341   │MONGOC_URI_SSLCER‐    │ sslcertifi‐      │ MON‐             │ tlscertifi‐      │
342   │TIFICATEAUTHORITYFILE │ cateauthority‐   │ GOC_URI_TLSCER‐  │ cateauthority‐   │
343   │                      │ file             │ TIFICATEAUTHORI‐ │ file             │
344   │                      │                  │ TYFILE           │                  │
345   ├──────────────────────┼──────────────────┼──────────────────┼──────────────────┤
346   │MONGOC_URI_SSLALLOW‐  │ sslallowinvalid‐ │ MON‐             │ tlsallowinvalid‐ │
347   │INVALIDCERTIFICATES   │ certificates     │ GOC_URI_TLSAL‐   │ certificates     │
348   │                      │                  │ LOWINVALIDCER‐   │                  │
349   │                      │                  │ TIFICATES        │                  │
350   ├──────────────────────┼──────────────────┼──────────────────┼──────────────────┤
351   │MONGOC_URI_SSLALLOW‐  │ sslallowinvalid‐ │ MON‐             │ tlsallowinvalid‐ │
352   │INVALIDHOSTNAMES      │ hostnames        │ GOC_URI_TLSAL‐   │ hostnames        │
353   │                      │                  │ LOWINVALIDHOST‐  │                  │
354   │                      │                  │ NAMES            │                  │
355   └──────────────────────┴──────────────────┴──────────────────┴──────────────────┘
356

SERVER DISCOVERY, MONITORING, AND SELECTION OPTIONS

358       Clients in a mongoc_client_pool_t share a topology scanner that runs on
359       a  background  thread.  The  thread  wakes  every  heartbeatFrequencyMS
360       (default  10 seconds) to scan all MongoDB servers in parallel. Whenever
361       an application operation requires a server that is not known--for exam‐
362       ple,  if  there  is  no  known primary and your application attempts an
363       insert--the thread rescans all servers every half-second. In this situ‐
364       ation  the  pooled client waits up to serverSelectionTimeoutMS (default
365       30 seconds) for the thread to find a server suitable for the operation,
366       then returns an error with domain MONGOC_ERROR_SERVER_SELECTION.
367
368       Technically, the total time an operation may wait while a pooled client
369       scans the topology is controlled both by  serverSelectionTimeoutMS  and
370       connectTimeoutMS.  The longest wait occurs if the last scan begins just
371       at the end of the selection timeout, and a slow or down server requires
372       the full connection timeout before the client gives up.
373
374       A  non-pooled client is single-threaded. Every heartbeatFrequencyMS, it
375       blocks the next application operation while it does  a  parallel  scan.
376       This  scan takes as long as needed to check the slowest server: roughly
377       connectTimeoutMS. Therefore the default heartbeatFrequencyMS  for  sin‐
378       gle-threaded clients is greater than for pooled clients: 60 seconds.
379
380       By default, single-threaded (non-pooled) clients scan only once when an
381       operation requires a server that is not known. If you attempt an insert
382       and  there is no known primary, the client checks all servers once try‐
383       ing to find it, then succeeds or returns  an  error  with  domain  MON‐
384       GOC_ERROR_SERVER_SELECTION.  But  if  you set serverSelectionTryOnce to
385       "false", the single-threaded client loops, checking all  servers  every
386       half-second, until serverSelectionTimeoutMS.
387
388       The  total  time  an operation may wait for a single-threaded client to
389       scan the topology is determined by  connectTimeoutMS  in  the  try-once
390       case,  or serverSelectionTimeoutMS and connectTimeoutMS if serverSelec‐
391       tionTryOnce is set "false".
392
393          ┌────────────────────┬─────────────────────┬─────────────────────┐
394          │Constant            │ Key                 │ Description         │
395          ├────────────────────┼─────────────────────┼─────────────────────┤
396          │MONGOC_URI_HEART‐   │ heartbeatfrequen‐   │ The        interval │
397          │BEATFREQUENCYMS     │ cyms                │ between server mon‐ │
398          │                    │                     │ itoring     checks. │
399          │                    │                     │ Defaults         to │
400          │                    │                     │ 10,000ms  (10  sec‐ │
401          │                    │                     │ onds)   in   pooled │
402          │                    │                     │ (multi-threaded)    │
403          │                    │                     │ mode,  60,000ms (60 │
404          │                    │                     │ seconds)         in │
405          │                    │                     │ non-pooled     mode │
406          │                    │                     │ (single-threaded).  │
407          └────────────────────┴─────────────────────┴─────────────────────┘
408
409          │MONGOC_URI_SERVERS‐ │ serverselection‐    │ A timeout  in  mil‐ │
410          │ELECTIONTIMEOUTMS   │ timeoutms           │ liseconds  to block │
411          │                    │                     │ for  server  selec‐ │
412          │                    │                     │ tion  before throw‐ │
413          │                    │                     │ ing  an  exception. │
414          │                    │                     │ The    default   is │
415          │                    │                     │ 30,0000ms (30  sec‐ │
416          │                    │                     │ onds).              │
417          ├────────────────────┼─────────────────────┼─────────────────────┤
418          │MONGOC_URI_SERVERS‐ │ serverselectiontry‐ │ If    "true",   the │
419          │ELECTIONTRYONCE     │ once                │ driver  scans   the │
420          │                    │                     │ topology    exactly │
421          │                    │                     │ once  after  server │
422          │                    │                     │ selection    fails, │
423          │                    │                     │ then either selects │
424          │                    │                     │ a server or returns │
425          │                    │                     │ an error. If it  is │
426          │                    │                     │ false,   then   the │
427          │                    │                     │ driver   repeatedly │
428          │                    │                     │ searches    for   a │
429          │                    │                     │ suitable server for │
430          │                    │                     │ up  to serverSelec‐ 
431          │                    │                     │ tionTimeoutMS  mil‐ │
432          │                    │                     │ liseconds  (pausing │
433          │                    │                     │ a    half    second │
434          │                    │                     │ between  attempts). │
435          │                    │                     │ The   default   for │
436          │                    │                     │ serverSelectionTry‐ 
437          │                    │                     │ Once is "false" for │
438          │                    │                     │ pooled     clients, │
439          │                    │                     │ otherwise   "true". │
440          │                    │                     │ Pooled      clients │
441          │                    │                     │ ignore serverSelec‐ │
442          │                    │                     │ tionTryOnce;   they │
443          │                    │                     │ signal  the  thread │
444          │                    │                     │ to    rescan    the │
445          │                    │                     │ topology      every │
446          │                    │                     │ half-second   until │
447          │                    │                     │ serverSelection‐    │
448          │                    │                     │ TimeoutMS expires.  │
449          ├────────────────────┼─────────────────────┼─────────────────────┤
450          │MONGOC_URI_SOCK‐    │ socketcheckinter‐   │ Only   applies   to │
451          │ETCHECKINTERVALMS   │ valms               │ single     threaded │
452          │                    │                     │ clients.    If    a │
453          │                    │                     │ socket has not been │
454          │                    │                     │ used   within  this │
455          │                    │                     │ time,  its  connec‐ │
456          │                    │                     │ tion   is   checked │
457          │                    │                     │ with    a     quick │
458          │                    │                     │ "isMaster"     call │
459          │                    │                     │ before it  is  used │
460          │                    │                     │ again.  Defaults to │
461          │                    │                     │ 5,000ms   (5   sec‐ │
462          │                    │                     │ onds).              │
463          └────────────────────┴─────────────────────┴─────────────────────┘
464
465       Setting any of the *TimeoutMS options above to 0 will be interpreted as
466       "use the default value".
467

CONNECTION POOL OPTIONS

469       These options govern the behavior of a mongoc_client_pool_t.  They  are
470       ignored by a non-pooled mongoc_client_t.
471
472          ┌────────────────────┬────────────────────┬─────────────────────┐
473          │Constant            │ Key                │ Description         │
474          └────────────────────┴────────────────────┴─────────────────────┘
475
476
477          │MONGOC_URI_MAXPOOL‐ │ maxpoolsize        │ The maximum  number │
478          │SIZE                │                    │ of  clients created │
479          │                    │                    │ by      a      mon‐ 
480          │                    │                    │ goc_client_pool_t   
481          │                    │                    │ total (both in  the │
482          │                    │                    │ pool   and  checked │
483          │                    │                    │ out).  The  default │
484          │                    │                    │ value  is 100. Once │
485          │                    │                    │ it is reached, mon‐ 
486          │                    │                    │ goc_client_pool_pop 
487          │                    │                    │ blocks        until │
488          │                    │                    │ another      thread │
489          │                    │                    │ pushes a client.    │
490          ├────────────────────┼────────────────────┼─────────────────────┤
491          │MONGOC_URI_MINPOOL‐ │ minpoolsize        │ Deprecated.    This │
492          │SIZE                │                    │ option's   behavior │
493          │                    │                    │ does  not match its │
494          │                    │                    │ name,    and    its │
495          │                    │                    │ actual     behavior │
496          │                    │                    │ will  likely   hurt │
497          │                    │                    │ performance.        │
498          ├────────────────────┼────────────────────┼─────────────────────┤
499          │MONGOC_URI_MAXIDLE‐ │ maxidletimems      │ Not implemented.    │
500          │TIMEMS              │                    │                     │
501          ├────────────────────┼────────────────────┼─────────────────────┤
502          │MONGOC_URI_WAIT‐    │ waitqueuemultiple  │ Not implemented.    │
503          │QUEUEMULTIPLE       │                    │                     │
504          ├────────────────────┼────────────────────┼─────────────────────┤
505          │MONGOC_URI_WAIT‐    │ waitqueuetimeoutms │ Not implemented.    │
506          │QUEUETIMEOUTMS      │                    │                     │
507          └────────────────────┴────────────────────┴─────────────────────┘
508

WRITE CONCERN OPTIONS

510               ┌───────────────────┬────────────┬─────────────────────┐
511               │Constant           │ Key        │ Description         │
512               └───────────────────┴────────────┴─────────────────────┘
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545                MONGOC_URI_W         w            Determines      the
546                                                  write       concern
547                                                  (guarantee).  Valid
548                                                  values:
549
550                                                         · 0   =  The
551                                                           driver
552                                                           will   not
553                                                           acknowl‐
554                                                           edge write
555                                                           operations
556                                                           but   will
557                                                           pass    or
558                                                           handle any
559                                                           network
560                                                           and socket
561                                                           errors
562                                                           that    it
563                                                           receives
564                                                           to     the
565                                                           client. If
566                                                           you   dis‐
567                                                           able write
568                                                           concern
569                                                           but enable
570                                                           the   get‐
571                                                           LastError
572                                                           command’s
573                                                           w  option,
574                                                           w    over‐
575                                                           rides  the
576                                                           w option.
577
578                                                         · 1  =  Pro‐
579                                                           vides
580                                                           basic
581                                                           acknowl‐
582                                                           edgement
583                                                           of   write
584                                                           opera‐
585                                                           tions.  By
586                                                           specifying
587                                                           1,     you
588                                                           require
589                                                           that     a
590                                                           standalone
591                                                           mongod
592                                                           instance,
593                                                           or     the
594                                                           primary
595                                                           for
596                                                           replica
597                                                           sets,
598                                                           acknowl‐
599                                                           edge   all
600                                                           write
601                                                           opera‐
602                                                           tions. For
603                                                           drivers
604                                                           released
605                                                           after  the
606                                                           default
607                                                           write con‐
608                                                           cern
609                                                           change,
610                                                           this    is
611                                                           the
612                                                           default
613                                                           write con‐
614                                                           cern  set‐
615                                                           ting.
616
617                                                         · majority =
618                                                           For
619                                                           replica
620                                                           sets,   if
621                                                           you  spec‐
622                                                           ify    the
623                                                           special
624                                                           majority
625                                                           value to w
626                                                           option,
627                                                           write
628                                                           operations
629                                                           will  only
630                                                           return
631                                                           success‐
632                                                           fully
633                                                           after    a
634                                                           majority
635                                                           of     the
636                                                           configured
637                                                           replica
638                                                           set   mem‐
639                                                           bers  have
640                                                           acknowl‐
641                                                           edged  the
642                                                           write
643                                                           operation.
644
645                                                         · n  =   For
646                                                           replica
647                                                           sets,   if
648                                                           you  spec‐
649                                                           ify a num‐
650                                                           ber      n
651                                                           greater
652                                                           than    1,
653                                                           operations
654                                                           with  this
655                                                           write con‐
656                                                           cern
657                                                           return
658                                                           only after
659                                                           n  members
660                                                           of the set
661                                                           have
662                                                           acknowl‐
663                                                           edged  the
664                                                           write.  If
665                                                           you set  n
666                                                           to  a num‐
667                                                           ber   that
668                                                           is greater
669                                                           than   the
670                                                           number  of
671                                                           available
672                                                           set   mem‐
673                                                           bers    or
674                                                           members
675                                                           that  hold
676                                                           data, Mon‐
677                                                           goDB  will
678                                                           wait,
679                                                           poten‐
680                                                           tially
681                                                           indefi‐
682                                                           nitely,
683                                                           for  these
684                                                           members to
685                                                           become
686                                                           available.
687
688                                                         · tags = For
689                                                           replica
690                                                           sets,  you
691                                                           can  spec‐
692                                                           ify  a tag
693                                                           set     to
694                                                           require
695                                                           that   all
696                                                           members of
697                                                           the    set
698                                                           that  have
699                                                           these tags
700                                                           configured
701                                                           return
702                                                           confirma‐
703                                                           tion    of
704                                                           the  write
705                                                           operation.
706               ├───────────────────┼────────────┼─────────────────────┤
707               │MONGOC_URI_WTIME‐  │ wtimeoutms │ The  time  in  mil‐ │
708               │OUTMS              │            │ liseconds  to  wait │
709               │                   │            │ for  replication to │
710               │                   │            │ succeed, as  speci‐ │
711               │                   │            │ fied   in   the   w │
712               │                   │            │ option, before tim‐ │
713               │                   │            │ ing    out.    When │
714               │                   │            │ wtimeoutMS  is   0, │
715               │                   │            │ write    operations │
716               │                   │            │ will   never   time │
717               │                   │            │ out.                │
718               ├───────────────────┼────────────┼─────────────────────┤
719               │MONGOC_URI_JOURNAL │ journal    │ Controls    whether │
720               │                   │            │ write    operations │
721               │                   │            │ will wait until the │
722               │                   │            │ mongod acknowledges │
723               │                   │            │ the   write  opera‐ │
724               │                   │            │ tions  and  commits │
725               │                   │            │ the  data to the on │
726               │                   │            │ disk journal.       │
727               │                   │            │                     │
728               │                   │            │        · true     = │
729               │                   │            │          Enables    │
730               │                   │            │          journal    │
731               │                   │            │          commit     │
732               │                   │            │          acknowl‐   │
733               │                   │            │          edgement   │
734               │                   │            │          write con‐ │
735               │                   │            │          cern.      │
736               │                   │            │          Equivalent │
737               │                   │            │          to  speci‐ │
738               │                   │            │          fying  the │
739               │                   │            │          getLastEr‐ │
740               │                   │            │          ror   com‐ │
741               │                   │            │          mand  with │
742               │                   │            │          the      j │
743               │                   │            │          option     │
744               │                   │            │          enabled.   │
745               │                   │            │                     │
746               │                   │            │        · false    = │
747               │                   │            │          Does   not │
748               │                   │            │          require    │
749               │                   │            │          that  mon‐ │
750               │                   │            │          god commit │
751               │                   │            │          write      │
752               │                   │            │          operations │
753               │                   │            │          to     the │
754               │                   │            │          journal    │
755               │                   │            │          before     │
756               │                   │            │          acknowl‐   │
757               │                   │            │          edging the │
758               │                   │            │          write      │
759               │                   │            │          operation. │
760               │                   │            │          This    is │
761               │                   │            │          the        │
762               │                   │            │          default    │
763               │                   │            │          option for │
764               │                   │            │          the  jour‐ │
765               │                   │            │          nal param‐ │
766               │                   │            │          eter.      │
767               └───────────────────┴────────────┴─────────────────────┘
768

READ CONCERN OPTIONS

770           ┌────────────────────┬──────────────────┬─────────────────────┐
771           │Constant            │ Key              │ Description         │
772           └────────────────────┴──────────────────┴─────────────────────┘
773
774           │MONGOC_URI_READCON‐ │ readconcernlevel │ The level of isola‐ │
775           │CERNLEVEL           │                  │ tion for read oper‐ │
776           │                    │                  │ ations.    If   the │
777           │                    │                  │ level    is    left │
778           │                    │                  │ unspecified,    the │
779           │                    │                  │ server default will │
780           │                    │                  │ be     used.    See │
781           │                    │                  │ readConcern in  the
782           │                    │                  │ MongoDB  Manual for │
783           │                    │                  │ details.            │
784           └────────────────────┴──────────────────┴─────────────────────┘
785

READ PREFERENCE OPTIONS

787       When connected to a replica set, the driver  chooses  which  member  to
788       query using the read preference:
789
790       1. Choose members whose type matches "readPreference".
791
792       2. From  these,  if  there are any tags sets configured, choose members
793          matching the first tag set. If there are none, fall back to the next
794          tag set and so on, until some members are chosen or the tag sets are
795          exhausted.
796
797       3. From the chosen  servers,  distribute  queries  randomly  among  the
798          server  with  the fastest round-trip times. These include the server
799          with the fastest time and any whose round-trip time is no more  than
800          "localThresholdMS" slower.
801
802       ┌─────────────────────┬─────────────────────┬──────────────────────────┐
803       │Constant             │ Key                 │ Description              │
804       ├─────────────────────┼─────────────────────┼──────────────────────────┤
805       │MONGOC_URI_READ‐     │ readpreference      │ Specifies       the      │
806       │PREFERENCE           │                     │ replica   set  read      │
807       │                     │                     │ preference for this      │
808       │                     │                     │ connection.    This      │
809       │                     │                     │ setting   overrides      │
810       │                     │                     │ any  slaveOk value.      │
811       │                     │                     │ The read preference      │
812       │                     │                     │ values are the fol‐      │
813       │                     │                     │ lowing:                  │
814       │                     │                     │                          │
815       │                     │                     │        · primary         │
816       │                     │                     │          (default)       │
817       │                     │                     │                          │
818       │                     │                     │        · prima‐          │
819       │                     │                     │          ryPre‐          │
820       │                     │                     │          ferred          │
821       │                     │                     │                          │
822       │                     │                     │        · secondary       │
823       │                     │                     │                          │
824       │                     │                     │        · sec‐            │
825       │                     │                     │          ondaryPre‐      │
826       │                     │                     │          ferred          │
827       │                     │                     │                          │
828       │                     │                     │        · nearest         │
829       ├─────────────────────┼─────────────────────┼──────────────────────────┤
830       │MONGOC_URI_READ‐     │ readpreferencetags  │ A representation of      │
831       │PREFERENCETAGS       │                     │ a tag set. See also      │
832       │                     │                     │ mon‐                     │
833       │                     │                     │ goc-read-prefs-tag-sets. │
834       └─────────────────────┴─────────────────────┴──────────────────────────┘
835
836
837
838
839
840
841
842       │MON‐                 │ localthresholdms    │ How  far  to  distribute │
843       │GOC_URI_LOCALTHRESH‐ │                     │ queries,    beyond   the │
844       │OLDMS                │                     │ server with the  fastest │
845       │                     │                     │ round-trip    time.   By │
846       │                     │                     │ default,  only   servers │
847       │                     │                     │ within   15ms   of   the │
848       │                     │                     │ fastest round-trip  time │
849       │                     │                     │ receive queries.         │
850       ├─────────────────────┼─────────────────────┼──────────────────────────┤
851       │MONGOC_URI_MAXSTALE‐ │ maxstalenessseconds │ The maximum  replication │
852       │NESSSECONDS          │                     │ lag, in wall clock time, │
853       │                     │                     │ that  a  secondary   can │
854       │                     │                     │ suffer and still be eli‐ │
855       │                     │                     │ gible.   The    smallest │
856       │                     │                     │ allowed     value    for │
857       │                     │                     │ maxStalenessSeconds   is │
858       │                     │                     │ 90 seconds.              │
859       └─────────────────────┴─────────────────────┴──────────────────────────┘
860
861       NOTE:
862          When  connecting  to  more than one mongos, libmongoc's localThresh‐
863          oldMS applies only to the selection of mongos servers. The threshold
864          for  selecting  among replica set members in shards is controlled by
865          the mongos's localThreshold command line option.
866

LEGACY OPTIONS

868       For historical reasons,  the  following  options  are  available.  They
869       should however not be used.
870
871                ┌───────────────────┬─────────┬─────────────────────┐
872                │Constant           │ Key     │ Description         │
873                ├───────────────────┼─────────┼─────────────────────┤
874                │MONGOC_URI_SAFE    │ safe    │ {true|false}   Same │
875                │                   │         │ as w={1|0}          │
876                ├───────────────────┼─────────┼─────────────────────┤
877                │MONGOC_URI_SLAVEOK │ slaveok │ When set,  same  as │
878                │                   │         │ readPreference=sec‐ │
879                │                   │         │ ondaryPreferred     │
880                └───────────────────┴─────────┴─────────────────────┘
881

AUTHOR

883       MongoDB, Inc
884
886       2017-present, MongoDB, Inc
887
888
889
890
8911.16.2                           Feb 25, 2020                  MONGOC_URI_T(3)
Impressum