Overview
En esta guía, puede aprender a utilizar una cadena de conexión y mongocxx::client objeto para conectarse a diferentes tipos de implementaciones de MongoDB.
Atlas
Para conectarse a una implementación de MongoDB en Atlas, incluya los siguientes elementos en su cadena de conexión:
URI de su clúster Atlas
Nombre de usuario de la base de datos MongoDB
Contraseña de la base de datos MongoDB
Luego, pase la cadena de conexión al constructor mongocxx::uri y use el objeto mongocxx::uri para construir un objeto mongocxx::client.
Al conectarse a Atlas, recomendamos usar la opción de cliente API estable para evitar cambios importantes cuando Atlas se actualice a una nueva versión de MongoDB Server. Para obtener más información sobre la función API estable, consulte Página API estable.
El siguiente código muestra cómo usar el controlador de C++ para conectarse a un clúster Atlas. El código también usa la opción server_api_opts para especificar una versión estable de la API.
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 su cadena de conexión.
Implementaciones locales
Para conectarse a una implementación local de MongoDB, use localhost como nombre de host. De forma predeterminada, el proceso mongod se ejecuta en el puerto 27017, aunque puede personalizarlo para su implementación.
El siguiente código muestra cómo usar el controlador C++ para conectarse a una implementación local de MongoDB:
int main() { mongocxx::instance instance; mongocxx::uri uri("mongodb://localhost:27017"); mongocxx::client client(uri); }
Sets de réplicas
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 puede proporcionar una lista completa de hosts en el conjunto de réplicas, puede especificar uno o más de ellos e indicar al controlador de C++ que realice la detección automática para encontrar los demás. Para ello, realice una de las siguientes acciones:
Especifique el nombre del conjunto de réplicas como el valor del parámetro
replicaSet.Especifique
falsecomo el valor del parámetrodirectConnection.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 se ejecuta en el puerto 27017 de tres hosts diferentes, incluido host1:
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.
Inicialización
Para inicializar un conjunto de réplicas, debe conectarse directamente a un solo miembro. Para ello, configure la opción de conexión directConnection como true en la cadena de conexión. El siguiente ejemplo de código muestra cómo configurar esta opción de conexión:
int main() { mongocxx::instance instance; mongocxx::uri uri("mongodb://<hostname>:<port>/?directConnection=true"); mongocxx::client client(uri); }
Documentación de la API
Para obtener más información sobre los tipos utilizados en esta página, consulte la siguiente documentación de API: