Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Elija un destino de conexión

En esta guía, puedes aprender cómo utilizar una cadena de conexión y un mongoc_client_t objeto para conectarse a diferentes tipos de implementaciones de MongoDB.

Para conectarte a una implementación de MongoDB en Atlas, incluye los siguientes elementos en tu cadena de conexión:

  • La URL de tu clúster Atlas

  • Su nombre de usuario de MongoDB

  • Su contraseña de MongoDB

Luego, pasa tu cadena de conexión a la función mongoc_client_new().

Tip

Sigue el Guía de conexión del controlador Atlas para recuperar tu cadena de conexión.

El siguiente código muestra cómo usar el controlador C para conectar a un clúster de Atlas. El código también utiliza la función mongoc_server_api_new() para especificar una versión de Stable API.

bson_t *ping = BCON_NEW("ping", BCON_INT32(1));
bson_t reply = BSON_INITIALIZER;
bson_error_t error;
mongoc_client_t *client = NULL;
// Create a new client
client = mongoc_client_new("mongodb+srv://<db_username>:<db_password>@<hostname:port>/?<options>");
// Set the version of the Stable API on the client
mongoc_server_api_t *api = mongoc_server_api_new(MONGOC_SERVER_API_V1);
if (!mongoc_client_set_server_api(client, api, &error)) {
fprintf(stderr, "error: %s\n", error.message);
goto cleanup;
}
// Send a ping to confirm a successful connection
if (!mongoc_client_command_simple(client, "admin", ping, NULL, &reply, &error)) {
fprintf(stderr, "error: %s\n", error.message);
goto cleanup;
}
printf("Pinged your deployment. You successfully connected to MongoDB!\n");
cleanup:
bson_destroy(&reply);
bson_destroy(ping);
mongoc_server_api_destroy(api);
mongoc_client_destroy(client);

Tip

Cuando te conectes a Atlas, te recomendamos utilizar la opción Stable API cliente para evitar cambios disruptivos cuando Atlas se actualice a una nueva versión de MongoDB Server. Para obtener más información sobre la Stable API, consulta la Stable API guide.

Para conectarse a una implementación local de MongoDB, use localhost como el nombre de host. Por defecto, el proceso mongod se ejecuta en el puerto 27017, aunque puedes personalizarlo para tu implementación.

El siguiente código muestra cómo utilizar el controlador C para conectarse a una implementación local de MongoDB:

bson_t *ping = BCON_NEW("ping", BCON_INT32(1));
bson_t reply = BSON_INITIALIZER;
bson_error_t error;
mongoc_client_t *client = NULL;
// Create a new client
mongoc_uri_t *uri = mongoc_uri_new_with_error("mongodb://localhost:27017", &error);
if (!uri) {
fprintf(stderr, "failed to parse URI, error: %s\n", error.message);
goto cleanup;
}
client = mongoc_client_new_from_uri(uri);
if (!client) {
goto cleanup;
}
// Send a ping to confirm a successful connection
if (!mongoc_client_command_simple(client, "admin", ping, NULL, &reply, &error)) {
fprintf(stderr, "error: %s\n", error.message);
goto cleanup;
}
printf("Pinged your deployment. You successfully connected to MongoDB!\n");
cleanup:
bson_destroy(&reply);
bson_destroy(ping);
mongoc_client_destroy(client);
mongoc_uri_destroy(uri);

Para conectarse a un set de réplicas, se deben especificar los nombres de host (o direcciones IP) y los números de puerto de los miembros del set de réplicas.

En lugar de proporcionar una lista completa de hosts en el set de réplicas, puedes especificar uno o más de los hosts en el set de réplicas e instruir al driver C para que realice un descubrimiento automático para encontrar los demás. Para indicar al controlador que realice el descubrimiento automático, realice una de las siguientes acciones:

  • Especifique el nombre del set de réplicas como el valor del parámetro replicaSet.

  • Especifique false como el valor del parámetro directConnection.

  • Especifica más de un host en el conjunto de réplicas.

El siguiente ejemplo utiliza un URI de conexión de muestra para conectarse al set de réplicas de MongoDB myreplset, que se ejecuta en el puerto 27017 de tres hosts diferentes:

bson_t *ping = BCON_NEW("ping", BCON_INT32(1));
bson_t reply = BSON_INITIALIZER;
bson_error_t error;
mongoc_client_t *client = NULL;
// Create a new client
client = mongoc_client_new("mongodb://host01:27017,host02:27017,host03:27017/?replicaSet=myreplset");
if (!client) {
goto cleanup;
}
// Send a ping to confirm a successful connection
if (!mongoc_client_command_simple(client, "admin", ping, NULL, &reply, &error)) {
fprintf(stderr, "error: %s\n", error.message);
goto cleanup;
}
printf("Pinged your deployment. You successfully connected to MongoDB!\n");
cleanup:
bson_destroy(&reply);
bson_destroy(ping);
mongoc_client_destroy(client);

La función mongoc_client_new() es no bloqueante. Al conectarse a un set de réplicas, el constructor devuelve el control inmediatamente mientras el cliente utiliza hilos en segundo plano para conectarse al set de réplicas.

Si se construye un objeto mongoc_client_t e inmediatamente se imprime la representación de cadena de su atributo nodes, la lista podría estar vacía mientras el cliente se conecta a los miembros del set de réplicas.

Nota

Set de réplicas en Docker

Cuando un set de réplicas se ejecuta en Docker, se podría exponer solo un punto final de MongoDB. En este caso, el set de réplicas no se puede detectar. Si se especifica directConnection=false en la URI de conexión, o se deja esta opción sin configurar, puedes evitar que tu aplicación se conecte a ella.

En un entorno de prueba o desarrollo, se puede conectar al set de réplicas especificando directConnection=true. En un entorno de producción, se recomienda configurar el clúster para que cada instancia de MongoDB sea accesible fuera de la red virtual de Docker.

Para usar la detección de servicios DNS para buscar el registro SRV del servicio al que te estás conectando, especifica el formato de conexión SRV en tu cadena de conexión. Cuando se especifica el formato de conexión SRV, el controlador C vuelve a escanear automáticamente en busca de nuevos hosts. No necesitas cambiar la configuración del cliente para habilitar este comportamiento.

El siguiente código crea un nuevo mongoc_client_t usando una cadena de conexión que utiliza el formato de conexión SRV:

mongoc_client_t *client = mongoc_client_new("mongodb+srv://<hostname>");

Para obtener más información sobre los objetos y funciones mencionados en esta guía, consulta la siguiente documentación de la API:

Volver

Pools de conexiones

En esta página