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 mongocxx::client 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:

  • URI de tu clúster de Atlas

  • Nombre de usuario de la base de datos MongoDB

  • Contraseña de la base de datos de MongoDB

Luego, pase la cadena de conexión al constructor mongocxx::uri y use el objeto mongocxx::uri para construir un objeto mongocxx::client.

Cuando se conecte a Atlas, se recomienda utilizar la opción de cliente de Stable API para evitar cambios disruptivos al actualizar a una nueva versión de MongoDB Server en Atlas. Para obtener más información sobre la funcionalidad Stable API, consulta Página API estable.

El siguiente código muestra cómo usar el controlador C++ para conectarse a un clúster de Atlas. El código también utiliza la opción server_api_opts para especificar una versión Stable API.

#include <mongocxx/instance.hpp>
#include <mongocxx/client.hpp>
#include <mongocxx/uri.hpp>
#include <bsoncxx/json.hpp>
#include <mongocxx/exception/exception.hpp>
using bsoncxx::builder::basic::kvp;
using bsoncxx::builder::basic::make_document;
int main()
{
mongocxx::instance instance;
// Replace the placeholder with your Atlas connection string
mongocxx::uri uri("<connection string>");
// Create a mongocxx::client with a mongocxx::options::client object to set the Stable API version
mongocxx::options::client client_options;
mongocxx::options::server_api server_api_options(mongocxx::options::server_api::version::k_version_1);
client_options.server_api_opts(server_api_options);
mongocxx::client client(uri, client_options);
try
{
// Ping the server to verify that the connection works
auto admin = client["admin"];
auto command = make_document(kvp("ping", 1));
auto result = admin.run_command(command.view());
std::cout << bsoncxx::to_json(result) << "\n";
std::cout << "Pinged your deployment. You successfully connected to MongoDB!\n";
}
catch (const mongocxx::exception &e)
{
std::cerr << "An exception occurred: " << e.what() << "\n";
return EXIT_FAILURE;
}
}

Tip

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

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 driver C++ para conectar a una implementación local de MongoDB:

#include <mongocxx/instance.hpp>
#include <mongocxx/uri.hpp>
#include <mongocxx/client.hpp>
int main()
{
mongocxx::instance instance;
mongocxx::uri uri("mongodb://localhost:27017");
mongocxx::client client(uri);
}

Para conectarse a un conjunto de réplicas, especifique los nombres de host (o direcciones IP) y los números de puerto de los miembros del conjunto de réplicas en su cadena de conexión.

Si no puedes 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 indicar al driver C++ que realice un descubrimiento automático para encontrar los otros. Para indicar al controlador que realice un 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.

En el siguiente ejemplo, el controlador utiliza un URI de conexión de muestra para conectarse al conjunto de réplicas de MongoDB sampleRS, que está funcionando en el puerto 27017 de tres hosts diferentes, incluyendo host1:

#include <mongocxx/instance.hpp>
#include <mongocxx/client.hpp>
#include <mongocxx/uri.hpp>
int main()
{
mongocxx::instance instance;
mongocxx::uri uri("mongodb://host1:27017/?replicaSet=sampleRS");
mongocxx::client client(uri);
}

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 inicializar un set de réplicas, debe conectarse directamente a un solo nodo. Para ello, establezca la opción de conexión directConnection en true en la cadena de conexión. El siguiente ejemplo de código muestra cómo configurar esta opción de conexión:

#include <mongocxx/instance.hpp>
#include <mongocxx/client.hpp>
#include <mongocxx/uri.hpp>
int main()
{
mongocxx::instance instance;
mongocxx::uri uri("mongodb://<hostname>:<port>/?directConnection=true");
mongocxx::client client(uri);
}

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

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

mongocxx::client client(mongocxx::uri("mongodb+srv://<hostname>"));

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

Volver

Crea un cliente de MongoDB

En esta página