Overview
Esta página describe las opciones de conexión disponibles en el driver Go y explica cómo aplicarlas a su conexión de MongoDB.
Cómo especificar las opciones de conexión
Las siguientes secciones describen cómo puede especificar las opciones de conexión mediante una cadena de conexión o una estructura ClientOptions.
Utilice la cadena de conexión
Puedes especificar opciones de conexión en una cadena de conexión pasando una estructura ClientOptions al método Connect(). En la cadena de conexión, puedes incluir opciones de conexión en la string como pares <name>=<value>. En el siguiente ejemplo, la cadena de conexión contiene la opción connectTimeoutMS con un valor de 60000 milisegundos y la opción tls con un valor de true:
const uri = "mongodb+srv://localhost:27017/?connectTimeoutMS=60000&tls=true" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
Uso de la estructura ClientOptions
También puede encadenar opciones de conexión a la estructura ClientOptions para configurar los ajustes de conexión. Configurar la conexión de esta manera facilita el cambio de ajustes en tiempo de ejecución, ayuda a detectar errores durante la compilación y proporciona más opciones de configuración que la cadena de conexión.
El siguiente ejemplo de código establece la opción Timeout en 60 segundos y habilita TLS pasando una estructura tls.Config vacía al método SetTLSConfig():
opts := options.Client(). SetConnectTimeout(60 * time.Second). SetTLSConfig(&tls.Config{}) client, _ := mongo.Connect(opts)
Opciones de set de réplicas
directConnection
Especifica si se debe forzar el despacho de todas las operaciones al host. Si especifica esta opción, el driver no acepta el formato de conexión SRV. En su lugar, debe utilizar el formato URI de conexión estándar. Para obtener más información sobre la conexión SRV y los formatos de conexión estándar, consulte la guía Cadenas de conexión en el manual de MongoDB Server.
Esta propiedad debe establecerse en false si se especifica más de un nombre de host.
Tipo de dato: bool
Valor por defecto: false
Ejemplo:
const uri = "mongodb://localhost:27017/?directConnection=true" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
Set de réplicas
El nombre del set de réplicas al que conectarse.
Tipo de dato: string
Valor por defecto: nil
Ejemplo:
const uri = "mongodb://localhost:27017/?replicaSet=yourReplicaSet" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
directConnection
Especifica si se debe forzar el despacho de todas las operaciones al host. Si especifica esta opción, el driver no acepta el formato de conexión SRV. En su lugar, debe utilizar el formato URI de conexión estándar. Para obtener más información sobre la conexión SRV y los formatos de conexión estándar, consulte la guía Cadenas de conexión en el manual de MongoDB Server.
Esta propiedad debe establecerse en false si se especifica más de un nombre de host.
Tipo de dato: bool
Valor por defecto: false
Ejemplo:
opts := options.Client(). SetDirect(true) client, _ := mongo.Connect(opts)
Set de réplicas
El nombre del set de réplicas al que conectarse.
Tipo de dato: string
Valor por defecto: nil
Ejemplo:
opts := options.Client(). SetReplicaSet("yourReplicaSet") client, _ := mongo.Connect(opts)
Opciones de TLS
Habilitar TLS
Especifica si se debe requerir TLS para las conexiones al servidor. Si usas un esquema de "mongodb+srv" o especificas otras opciones de TLS, esta opción será por defecto true. En caso contrario, el valor será por defecto false.
Tipo de dato: bool
Valor por defecto: nil
Ejemplo:
const uri = "mongodb://localhost:27017/?tls=true" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
Habilitar TLS
Especifica si se debe requerir TLS para las conexiones al servidor. Si usas un esquema de "mongodb+srv" o especificas otras opciones de TLS, esta opción será por defecto true. En caso contrario, el valor será por defecto false.
Tipo de dato: tls.Config
Valor por defecto: false
Ejemplo:
opts := options.Client(). SetTLSConfig(&tls.Config{}) client, _ := mongo.Connect(opts)
Para obtener más información sobre las opciones de TLS, consulte la guía Habilitar TLS en una conexión.
Opciones de tiempo de espera
Tiempo de espera de conexión
La duración de tiempo que el driver intenta establecer una sola conexión de socket TCP con el servidor antes de agotar el tiempo de espera.
Tipo de dato: intno negativo
Valor por defecto: 30000 Milisegundos
Ejemplo:
const uri = "mongodb://localhost:27017/?connectTimeoutMS=60000" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
Tiempo de espera
La cantidad de tiempo que una sola operación ejecutada en el cliente puede ejecutarse antes de devolver un error.
Tipo de dato: intno negativo
Valor por defecto: nil
Ejemplo:
const uri = "mongodb://localhost:27017/?timeoutMS=30000" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
Tiempo de espera de conexión
La duración de tiempo que el driver intenta establecer una sola conexión de socket TCP con el servidor antes de agotar el tiempo de espera.
Tipo de dato: time.Duration
Valor por defecto: 30 Segundos
Ejemplo:
opts := options.Client(). SetConnectTimeout(60 * time.Second) client, _ := mongo.Connect(opts)
Tiempo de espera
La cantidad de tiempo que una sola operación ejecutada en el cliente puede ejecutarse antes de devolver un error.
Tipo de dato: time.Duration
Valor por defecto: nil
Ejemplo:
opts := options.Client(). SetTimeout(30 * time.Second) client, _ := mongo.Connect(opts)
Opciones de compresión
compresores
Los tipos de compresión preferidos, en orden, para los mensajes del protocolo de conexión enviados al servidor o recibidos de este. Puede habilitar "snappy", "zlib" y "zstd" como dependencias opcionales en tiempo de compilación. El driver utiliza el primero de estos tipos de compresión que admite el servidor.
Tipo de dato: string (valores separados por comas)
Valor por defecto: nil
Ejemplo:
const uri = "mongodb://localhost:27017/?compressors=zlib,snappy" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
Nivel de compresión de zlib
El nivel de compresión para que zlib lo use. Esta opción se ignora si zlib no se especifica como compresor a través de ApplyURI o SetCompressors. Esta opción acepta un valor entero entre -1 y 9:
-1: (por defecto).zlibutiliza su nivel de compresión por defecto (normalmente6).0: Sin compresión.1: La velocidad más rápida pero la compresión más baja.9: La mejor compresión pero la velocidad más lenta.
Tipo de dato: int
Valor por defecto: -1
Ejemplo:
const uri = "mongodb://localhost:27017/?compressors=zlib&zlibCompressionLevel=6" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
Nivel de compresión Zstandard
El nivel de compresión para que zstd lo use. Esta opción se ignora si zstd no se especifica como compresor a través de ApplyURI o SetCompressors. Esta opción acepta valores enteros entre 1 y 20:
1: La velocidad más rápida pero la compresión más baja.20: La mejor compresión pero la velocidad más lenta.
Tipo de dato: int
Valor por defecto: 6
Ejemplo:
const uri = "mongodb://localhost:27017/?compressors=zstd&zstdCompressionLevel=6" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
compresores
Los tipos de compresión preferidos, en orden, para los mensajes del protocolo de conexión enviados al servidor o recibidos de este. Puede habilitar "snappy", "zlib" y "zstd" como dependencias opcionales en tiempo de compilación. El driver utiliza el primero de estos tipos de compresión que admite el servidor.
Tipo de dato: []string
Valor por defecto: nil
Ejemplo:
opts := options.Client(). SetCompressors([]string{"zlib", "snappy"}) client, _ := mongo.Connect(opts)
Nivel de compresión de zlib
El nivel de compresión para que zlib lo use. Esta opción se ignora si zlib no se especifica como compresor a través de ApplyURI o SetCompressors. Esta opción acepta un valor entero entre -1 y 9:
-1: (Por defecto).
zlibutiliza su nivel de compresión por defecto (normalmente6).0: Sin compresión.
1: La velocidad más rápida, pero la compresión más baja.
9: Mejor compresión pero la velocidad más lenta.
Tipo de dato: int
Valor por defecto: -1
Ejemplo:
opts := options.Client(). SetCompressors([]string{"zlib"}). SetZlibLevel(6) client, _ := mongo.Connect(opts)
Nivel de compresión Zstandard
El nivel de compresión para que zstd lo use. Esta opción se ignora si zstd no se especifica como compresor a través de ApplyURI o SetCompressors. Esta opción acepta valores enteros entre 1 y 20:
Tipo de dato: int
Valor por defecto: 6
Ejemplo:
opts := options.Client(). SetCompressors([]string{"zstd"}). SetZstdLevel(8) client, _ := mongo.Connect(opts)
Para obtener más información sobre la compresión, consulte la guía Compresión de red.
Opciones del pool de conexiones
maxPoolSize
El mayor número de clientes o conexiones que el driver puede crear en su pool de conexiones. Este recuento incluye las conexiones en uso.
Tipo de dato: intno negativo
Valor por defecto: 100
Ejemplo:
const uri = "mongodb://localhost:27017/?maxPoolSize=150" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
minPoolSize
El número de conexiones que el driver crea y mantiene en el pool de conexiones incluso cuando no se están realizando operaciones. Este recuento incluye las conexiones en uso.
Tipo de dato: intno negativo
Valor por defecto: 0
Ejemplo:
const uri = "mongodb://localhost:27017/?minPoolSize=3" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
MaxConnectionIdleTime
El tiempo que una conexión puede estar inactiva antes de que el driver la cierre.
Tipo de dato: intno negativo
Valor por defecto: 0
Ejemplo:
const uri = "mongodb://localhost:27017/?maxIdleTimeMS=8000" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
maxConnecting
El número máximo de conexiones que un pool de conexiones puede establecer simultáneamente.
Tipo de dato: intno negativo
Valor por defecto: 2
Ejemplo:
const uri = "mongodb://localhost:27017/?maxConnecting=3" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
maxPoolSize
El mayor número de clientes o conexiones que el driver puede crear en su pool de conexiones. Este recuento incluye las conexiones en uso.
Tipo de dato: uint64no negativo
Valor por defecto: 100
Ejemplo:
opts := options.Client(). SetMaxPoolSize(150) client, _ := mongo.Connect(opts)
minPoolSize
El número de conexiones que el driver crea y mantiene en el pool de conexiones incluso cuando no se están realizando operaciones. Este recuento incluye las conexiones en uso.
Tipo de dato: uint64no negativo
Valor por defecto: 0
Ejemplo:
opts := options.Client(). SetMinPoolSize(3) client, _ := mongo.Connect(opts)
MaxConnectionIdleTime
El tiempo que una conexión puede estar inactiva antes de que el driver la cierre.
Tipo de dato: time.Duration
Valor por defecto: 0
Ejemplo:
opts := options.Client(). SetMaxConnIdleTime(8 * time.Second) client, _ := mongo.Connect(opts)
maxConnecting
El número máximo de conexiones que un pool de conexiones puede establecer simultáneamente.
Tipo de dato: uint64no negativo
Valor por defecto: 2
Ejemplo:
opts := options.Client(). SetMaxConnecting(3) client, _ := mongo.Connect(opts)
Para obtener más información sobre los pool de conexiones, consulta la guía pool de conexiones.
Opciones de nivel de confirmación de escritura
Nivel de confirmación de escritura
El componente w del nivel de confirmación de escritura (write concern), que solicita el reconocimiento de que la operación de escritura se ha propagado a un número especificado de instancias de MongoDB. El valor por defecto es "majority" o 1, dependiendo del número de árbitros y nodos de votación. Para obtener más información sobre la opción w, consulta nivel de confirmación de escritura (write concern) en el manual de MongoDB Server.
Tipo de dato: int or string
Valor por defecto: 1 or "majority"
Ejemplo:
const uri = "mongodb://localhost:27017/?w=2" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
Nivel de confirmación de escritura
El componente w del nivel de confirmación de escritura (write concern), que solicita el reconocimiento de que la operación de escritura se ha propagado a un número especificado de instancias de MongoDB. El valor por defecto es "majority" o 1, dependiendo del número de árbitros y nodos de votación. Para obtener más información sobre la opción w, consulta nivel de confirmación de escritura (write concern) en el manual de MongoDB Server.
Tipo de dato: writeconcern.WriteConcern
Valor por defecto: 1 or "majority"
Ejemplo:
wc := &writeconcern.WriteConcern{ W: 2, } opts := options.Client().SetWriteConcern(wc) client, _ := mongo.Connect(opts)
Opciones de readConcern
readConcern
El nivel de consistencia de lectura del cliente. Para obtener más información, consulte la referencia de nivel de consistencia de lectura en el manual de MongoDB Server.
Tipo de dato: string
Valor por defecto: local
Ejemplo:
const uri = "mongodb://localhost:27017/?readConcernLevel=majority" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
readConcern
El nivel de consistencia de lectura del cliente. Para obtener más información, consulte la referencia de nivel de consistencia de lectura en el manual de MongoDB Server.
Tipo de dato: readconcern.ReadConcern
Valor por defecto: nil
Ejemplo:
opts := options.Client(). SetReadConcern(readconcern.Majority()) client, _ := mongo.Connect(opts)
Opciones de preferencia de lectura
preferencia de lectura
La configuración de preferencia de lectura por defecto del cliente. Consulte Preferencia de lectura en el manual de MongoDB Server para obtener más información.
Tipo de dato: string
Valor por defecto: primary
Ejemplo:
const uri = "mongodb://localhost:27017/?readPreference=primaryPreferred" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
preferencia de lectura
La configuración de preferencia de lectura por defecto del cliente. Consulte Preferencia de lectura en el manual de MongoDB Server para obtener más información.
Tipo de dato: readpref.ReadPref
Valor por defecto: readpref.Primary()
Ejemplo:
opts := options.Client(). SetReadPreference(readpref.PrimaryPreferred()) client, _ := mongo.Connect(opts)
Opciones de autenticación
Mecanismo de autenticación
El mecanismo que utiliza el driver para autenticarse en MongoDB Server. Si no especificas un mecanismo de autenticación, el driver utiliza SCRAM-SHA-1 o SCRAM-SHA-256, según la versión del servidor.
Para obtener más información sobre los mecanismos de autenticación disponibles, consulte las guías Mecanismo de autenticación.
Tipo de dato: string
Valor por defecto: vacío (sin autenticación), o SCRAM-SHA-256 una vez que la autenticación esté habilitada
Ejemplo:
const uri = "mongodb://user:password@localhost:27017/?authMechanism=PLAIN&authSource=admin" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
Mecanismo de autenticación
El mecanismo que utiliza el driver para autenticarse en MongoDB Server. Si no especificas un mecanismo de autenticación, el driver utiliza SCRAM-SHA-1 o SCRAM-SHA-256, según la versión del servidor.
Para obtener más información sobre los mecanismos de autenticación disponibles, consulte las guías Mecanismo de autenticación.
Tipo de dato: Credential
Valor por defecto: vacío (sin autenticación), o SCRAM-SHA-256 una vez que la autenticación esté habilitada
Ejemplo:
credential := options.Credential{ AuthMechanism: "PLAIN", AuthSource: "admin", Username: "user", Password: "password", } opts := options.Client().SetAuth(credential) client, _ := mongo.Connect(opts)
Opciones de selección de servidor
Tiempo de espera de selección del servidor
El tiempo que el driver intenta seleccionar un servidor antes de agotar el tiempo de espera.
Tipo de dato: intno negativo
Valor por defecto: 30000 Milisegundos
Ejemplo:
const uri = "mongodb://localhost:27017/?serverSelectionTimeoutMS=40000" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
Umbral local
La ventana de latencia para la elegibilidad del servidor. Si el viaje de ida y vuelta de un servidor tarda más que el tiempo de viaje de ida y vuelta del servidor más rápido más este valor, el servidor no es elegible para la selección.
Tipo de dato: intno negativo
Valor por defecto: 15 Milisegundos
Ejemplo:
const uri = "mongodb://localhost:27017/?localThresholdMS=20000" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
Tiempo de espera de selección del servidor
El tiempo que el driver intenta seleccionar un servidor antes de agotar el tiempo de espera.
Tipo de dato: time.Duration
Valor por defecto: 30 Segundos
Ejemplo:
opts := options.Client(). SetServerSelectionTimeout(40 * time.Second) client, _ := mongo.Connect(opts)
Umbral local
La ventana de latencia para la elegibilidad del servidor. Si el viaje de ida y vuelta de un servidor tarda más que el tiempo de viaje de ida y vuelta del servidor más rápido más este valor, el servidor no es elegible para la selección.
Tipo de dato: time.Duration
Valor por defecto: 15 Milisegundos
Ejemplo:
opts := options.Client(). SetLocalThreshold(20 * time.Millisecond) client, _ := mongo.Connect(opts)
Opciones de reintentos
retryReads
Activar las lecturas reintentables.
Tipo de dato: bool
Valor por defecto: true
Ejemplo:
const uri = "mongodb://localhost:27017/?retryReads=false" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
retryWrites
Activar las escrituras reintentables.
Tipo de dato: bool
Valor por defecto: true
Ejemplo:
const uri = "mongodb://localhost:27017/?retryWrites=false" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
Reintentos adaptativos máximos
El número máximo de veces que el driver debe reintentar las operaciones que fallan con un error de sobrecarga del lado del servidor.
Tipo de dato: intno negativo
Valor por defecto: 2
Ejemplo:
const uri = "mongodb://localhost:27017/?maxAdaptiveRetries=3" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
retryReads
Activar las lecturas reintentables.
Tipo de dato: bool
Valor por defecto: true
Ejemplo:
opts := options.Client(). SetRetryReads(false) client, _ := mongo.Connect(opts)
retryWrites
Activar las escrituras reintentables.
Tipo de dato: bool
Valor por defecto: true
Ejemplo:
opts := options.Client(). SetRetryWrites(false) client, _ := mongo.Connect(opts)
Reintentos adaptativos máximos
El número máximo de veces que el driver debe reintentar las operaciones que fallan con un error de sobrecarga del lado del servidor.
Tipo de dato: uintno negativo
Valor por defecto: 2
Ejemplo:
const uri = "mongodb://localhost:27017/?maxAdaptiveRetries=3" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
Opciones misceláneas
Nombre de la aplicación
El nombre de la aplicación que el driver pasa al servidor en los metadatos del cliente como parte del protocolo de enlace de conexión. El servidor imprime este valor en los registros de MongoDB una vez que establece la conexión. El valor también se registra en los registros de query lentas y en las colecciones de perfiles.
Tipo de dato: string
Valor por defecto: nil
Ejemplo:
const uri = "mongodb://localhost:27017/?appName=yourAppName" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
loadBalanced
Especifica si el driver se está conectando a un balanceador de carga. Puede establecer esta propiedad en true solo si se cumplen todas las siguientes condiciones:
Solo especifica un nombre de host
No estás conectándote a un set de réplicas.
No estás utilizando la propiedad
SrvMaxHostsNo estás utilizando la propiedad
DirectConnection
Tipo de dato: bool
Valor por defecto: false
Ejemplo:
const uri = "mongodb://localhost:27017/?loadBalanced=true" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
srvMaxHosts
El mayor número de resultados de SRV que se seleccionarán al azar al rellenar inicialmente la lista de nodos iniciales o, durante la exploración de SRV, al añadir nuevos hosts a la topología.
Puedes usar esta propiedad solo si el esquema de la cadena de conexión está establecido en ConnectionStringScheme.MongoDBPlusSrv. No se puede utilizar al conectarse a un set de réplicas.
Tipo de dato: intno negativo
Valor por defecto: 0
Ejemplo:
opts := options.Client(). SetSRVMaxHosts(5) client, _ := mongo.Connect(opts)
srvServiceName
El nombre del servicio de los registros de recursos SRV que el driver recupera para construir tu lista de nodos iniciales. El controlador utiliza el nombre del servicio para crear el URI SRV, que coincide con el siguiente formato:
_{srvServiceName}._tcp.{hostname}.{domainname}
Esta propiedad sobrescribe el nombre de servicio por defecto para la búsqueda SRV en el descubrimiento y la sondeo. El valor por defecto es "mongodb".
Puedes usar esta propiedad solo si el esquema de la cadena de conexión está establecido en ConnectionStringScheme.MongoDBPlusSrv. No se puede utilizar al conectarse a un set de réplicas.
Tipo de dato: string
Valor por defecto: mongodb
Ejemplo:
const uri = "mongodb+srv://localhost/?srvServiceName=yourServiceName" client, _ := mongo.Connect(options.Client().ApplyURI(uri))
Nombre de la aplicación
El nombre de la aplicación que el driver pasa al servidor en los metadatos del cliente como parte del protocolo de enlace de conexión. El servidor imprime este valor en los registros de MongoDB una vez que establece la conexión. El valor también se registra en los registros de query lentas y en las colecciones de perfiles.
Tipo de dato: string
Valor por defecto: nil
Ejemplo:
opts := options.Client(). SetAppName("yourAppName") client, _ := mongo.Connect(opts)
loadBalanced
Especifica si el driver se está conectando a un balanceador de carga. Puede establecer esta propiedad en true solo si se cumplen todas las siguientes condiciones:
Solo especifica un nombre de host
No estás conectándote a un set de réplicas.
No estás utilizando la propiedad
SrvMaxHostsNo estás utilizando la propiedad
DirectConnection
Tipo de dato: bool
Valor por defecto: false
Ejemplo:
opts := options.Client(). SetLoadBalanced(true) client, _ := mongo.Connect(opts)
Server API
Configure la versión de la API enviada al servidor al ejecutar comandos. Para obtener más información sobre la API del servidor, consulte la guía Stable API.
Tipo de dato: ServerAPIOptions
Valor por defecto: nil
Ejemplo:
opts := options.Client(). SetServerAPIOptions(options.ServerAPI(options.ServerAPIVersion1)) client, _ := mongo.Connect(opts)
srvMaxHosts
El mayor número de resultados de SRV que se seleccionarán al azar al rellenar inicialmente la lista de nodos iniciales o, durante la exploración de SRV, al añadir nuevos hosts a la topología.
Puedes usar esta propiedad solo si el esquema de la cadena de conexión está establecido en ConnectionStringScheme.MongoDBPlusSrv. No se puede utilizar al conectarse a un set de réplicas.
Tipo de dato: intno negativo
Valor por defecto: 0
Ejemplo:
opts := options.Client(). SetSRVMaxHosts(5) client, _ := mongo.Connect(opts)
srvServiceName
El nombre del servicio de los registros de recursos SRV que el driver recupera para construir tu lista de nodos iniciales. El controlador utiliza el nombre del servicio para crear el URI SRV, que coincide con el siguiente formato:
_{srvServiceName}._tcp.{hostname}.{domainname}
Esta propiedad sobrescribe el nombre de servicio por defecto para la búsqueda SRV en el descubrimiento y la sondeo. El valor por defecto es "mongodb".
Puedes usar esta propiedad solo si el esquema de la cadena de conexión está establecido en ConnectionStringScheme.MongoDBPlusSrv. No se puede utilizar al conectarse a un set de réplicas.
Tipo de dato: string
Valor por defecto: mongodb
Ejemplo:
opts := options.Client(). SetSRVServiceName("yourServiceName") client, _ := mongo.Connect(opts)
Información Adicional
Para aprender más sobre las opciones que puedes especificar en una cadena de conexión, consulta Opciones de cadena de conexión en el manual del MongoDB Server.
Para obtener más información sobre los tipos utilizados en esta página, consulte la siguiente documentación de la API: