Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Especifica opciones de conexión

Esta página describe las opciones de conexión disponibles en el driver C y explica cómo aplicarlas a tu conexión de MongoDB.

Las siguientes secciones describen las formas en las que puedes especificar las opciones de conexión.

Si pasas una cadena de conexión a la estructura monogoc_client_t, puedes incluir opciones de conexión en la cadena como pares <name>=<value>. En el siguiente ejemplo, la cadena de conexión contiene la opción connectTimeoutMS con un valor de 60000 y la opción tls con un valor de true:

mongoc_init();
// Specifies the connection options in the connection string
const char *uri = "mongodb+srv://localhost:27017/?connectTimeoutMS=60000&tls=true";
// Creates a new client
mongoc_client_t *client = mongoc_client_new_from_uri_with_error(uri, &error);
if (!client) {
fprintf(stderr, "%s\n", error.message);
goto cleanup;
}
// Use client...
cleanup:
mongoc_client_destroy(client);
mongoc_uri_destroy(uri);

Para obtener más información sobre las opciones que puede especificar en una cadena de conexión, consulte Opciones de cadena de conexión en el manual del servidor MongoDB.

Puedes utilizar opciones URI para configurar los ajustes de conexión en el código en lugar de en una cadena 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.

Para configurar las opciones de conexión utilizando la opción URI, realiza los siguientes pasos:

  1. Crea una estructura mongoc_uri_t con tu cadena de conexión

  2. Se puede usar una función de configuración de URI para indicar la opción de conexión deseada

  3. Crea un nuevo cliente con el URI pasando el URI a mongoc_client_new_from_uri()

El siguiente ejemplo de código muestra cómo realizar los pasos anteriores:

mongoc_uri_t *uri = mongoc_uri_new_with_error("mongodb+srv://localhost:27017/", &error);
if (!uri) {
fprintf(stderr, "%s\n", error.message);
goto cleanup;
}
// Specifies the connection options by using the URI options API
if (!mongoc_uri_set_option_as_int32(uri, MONGOC_URI_CONNECTTIMEOUTMS, 60000)) {
fprintf(stderr, "Failed to set '%s'\n", MONGOC_URI_CONNECTTIMEOUTMS);
goto cleanup;
}
if (!mongoc_uri_set_option_as_bool(uri, MONGOC_URI_TLS, true)) {
fprintf(stderr, "Failed to set '%s'\n", MONGOC_URI_TLS);
goto cleanup;
}
// Creates a new client
client = mongoc_client_new_from_uri_with_error(uri, &error);
if (!client) {
fprintf(stderr, "%s\n", error.message);
goto cleanup;
}
// Use client...
cleanup:
mongoc_client_destroy(client);
mongoc_uri_destroy(uri);

Las siguientes secciones describen las opciones de conexión disponibles en el controlador C y cómo especificarlas mediante una cadena de conexión directa o una opción URI.

Specifies whether to force dispatch all operations to the host. If you specify this option, the driver doesn't accept the SRV connection format. You must use the standard connection URI format instead. To learn more about the SRV connection and the standard connection formats, see the Connection Strings guide.

El valor por defecto es false. Esta propiedad debe configurarse como false sí especifica más de un nombre de Host.

mongoc_uri_t *uri = mongoc_uri_new("mongodb://localhost:27017/?directConnection=true");

El nombre del set de réplicas al que se desea conectar. El valor por defecto es null.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?replicaSet=yourReplicaSet");

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.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?tls=true");

Especifica si se deben relajar las restricciones de TLS tanto como sea posible. Esto puede incluir permitir certificados no válidos o discrepancias de nombres de host. El valor por defecto es false.

El siguiente ejemplo de código muestra cómo establecer esta opción en true:

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?tls=true&tlsAllowInvalidCertificates=true");

Si se debe deshabilitar la comprobación de revocación de certificados durante el apretón de manos TLS. El valor por defecto es false.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?tls=true&tlsDisableCertificateRevocationCheck=true");

Opciones de TLS/SSL, incluyendo certificados de cliente, gestión de revocaciones y protocolos de TLS/SSL habilitados y deshabilitados. El valor por defecto es null.

Esta opción solo puede establecerse mediante Opciones URI. Para aprender cómo configurar las opciones de SSL, consulte la sección Opciones SSL en la pestaña MongoC URI Option.

Para obtener más información sobre las opciones de TLS, consultar la guía Configurar la seguridad de la capa de transporte (TLS).

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. El valor por defecto es de 10 segundos.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?connectTimeoutMS=60000");

La duración de tiempo que el controlador intenta enviar o recibir a través de un socket antes de exceder el tiempo de espera. El sistema operativo establece el valor por defecto.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?socketTimeoutMS=60000");

Los tipos de compresión preferidos, en orden, para los mensajes del protocolo de conexión enviados al o recibidos del servidor. Puede habilitar "snappy", "zlib" y "zstd" como dependencias opcionales en tiempo de compilación. El controlador utiliza el primero de estos tipos de compresión que admite el servidor. El valor por defecto está vacío.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?compressors=zlib,snappy");

El mayor número de clientes o conexiones que el controlador puede crear en su pool de conexiones. Este recuento incluye las conexiones en uso. El valor por defecto es 100.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?maxPoolSize=150");

El tiempo que el driver intenta extraer una conexión del pool de conexiones del servidor antes de que caduque.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?waitQueueTimeoutMS=30000");

Para obtener más información sobre los pool de conexiones, consulta la guía pool de conexiones.

El componente w de la solicitud de confirmación de escritura pide que se confirme que la operación de escritura se ha propagado a un número determinado de instancias de MongoDB. El valor predeterminado es "majority" o 1, según el número de árbitros y nodos de votación. Para obtener más información sobre la opción w, consulte la sección "Solicitud de confirmación de escritura" en el manual del servidor MongoDB.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?w=2");

El componente wtimeoutms de la restricción de escritura especifica un límite de tiempo para dicha restricción. Para obtener más información sobre la opción wtimeout, consulte la sección "Restricción de escritura" en el manual del servidor MongoDB.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?wTimeoutMS=5000");

El componente j de la solicitud de confirmación de escritura solicita que las instancias de MongoDB hayan escrito en el registro en disco. El valor predeterminado depende del valor de la configuración writeConcernMajorityJournalDefault. Para obtener más información sobre la opción j, consulte la sección "Solicitud de confirmación de escritura" en el manual del servidor MongoDB.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?journal=true");

Nivel de preocupación de lectura del cliente. Para obtener más información, consulte la referencia sobre el nivel de preocupación de lectura en el manual del servidor MongoDB.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?readConcernLevel=local");

The client's default read-preference settings. The default value is primary. See Read Preference in the MongoDB Server manual for more information.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?readPreference=primaryPreferred");

Los Segundos Máximos de Antigüedad representan el mayor atraso de la replicación, en tiempo de reloj, que una secundaria puede experimentar y seguir siendo elegible para la selección del servidor. El valor mínimo permitido para maxStalenessSeconds es 90 segundos. Esta opción debe usarse con una preferencia de lectura distinta a la primaria.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?readPreference=secondary&maxStalenessSeconds=120");

La ventana de latencia para la elegibilidad del servidor. Si el tiempo de viaje de ida y vuelta de un servidor es más largo 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. El valor por defecto es de 15 milisegundos.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?localThresholdMS=150");

El mecanismo que el driver utiliza para autenticarse en el MongoDB Server. Si no se especifica un mecanismo de autenticación, el controlador 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, consulta la Mecanismos de autenticación o la guía Mecanismos de autenticación empresarial.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?authSource=admin&authMechanism=GSSAPI");

El intervalo entre las verificaciones de supervisión del servidor. Debe ser mayor o igual a 500 milisegundos. El valor por defecto es 10000 ms (10 segundos) en modo agrupado (multihilo) y 60000 ms (60 segundos) en modo no agrupado (de un solo hilo).

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?heartbeatFrequencyMS=5000");

El tiempo que el controlador intenta seleccionar un servidor antes de agotar el tiempo de espera. El valor por defecto es 30000 ms (30 segundos).

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?serverSelectionTimeoutMS=40000");

Solo se aplica a clientes de un solo hilo. Si un socket no se ha utilizado en este tiempo, el driver comprueba la conexión con una rápida llamar "hello" antes de volver a utilizarlo. Por defecto, 5000 ms (5 segundos).

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?socketCheckIntervalMS=10000");

Activar las lecturas reintentables. El valor por defecto es true.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?retryReads=false");

Activar las escrituras reintentables. El valor por defecto es true.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?retryWrites=false");

Nota

Deslastre de carga en la gestión inteligente de cargas de trabajo (IWM)

Si los errores con las etiquetas SystemOverloadedError o RetryableError están causando fallos en su aplicación o aparecen en el registro de su aplicación, Load Shedding puede estar activo en su clúster y su driver puede no estar actualizado a una versión que lo admita. Recomendamos actualizar su MongoDB C driver a la versión 2.3 o posterior. Si sigue viendo estos errores después de la actualización, puede solucionarlos mediante cambios en el lado del servidor, como la revisión de la configuración de Load Shedding, o mediante cambios en el lado de la aplicación, como implementar un manejo de errores personalizado o la limitación de solicitudes en el lado del cliente. Dependiendo de su situación, los cambios en la aplicación pueden ser preferibles o necesarios.

Reducción de carga es una funcionalidad de IWM, y ayuda a gestionar la carga del servidor al rechazar operaciones excesivas durante una sobrecarga sostenida. Esta funcionalidad está disponible en MongoDB 9.0 y versiones posteriores.

Para obtener más información sobre IWM o sobre cómo gestionar los errores de sobrecarga, consulte la página de Gestión inteligente de la carga de trabajo o la página de Errores de sobrecarga en la documentación de Atlas.

El nombre de la aplicación que el controlador pasa al servidor en los metadatos del cliente como parte del proceso 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. El valor por defecto está vacío.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?appName=yourAppName");

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 SrvMaxHosts

  • No estás utilizando la propiedad DirectConnection

El valor por defecto es false.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?loadBalanced=true");

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. El valor por defecto es 0.

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.

mongoc_uri_t *uri = mongoc_uri_new("mongodb+srv://localhost:27017/?srvMaxHosts=5");

Para obtener más información sobre los tipos utilizados en esta página, consulte la siguiente documentación de la API: