Overview
En esta guía, puede aprender a utilizar una cadena de conexión y MongoClient 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:
URL de su clúster Atlas
Nombre de usuario de MongoDB
Contraseña de MongoDB
Luego, pase la cadena de conexión al constructor MongoClient.
Tip
Sigue el Guía de conexión del controlador Atlas para recuperar su cadena de conexión.
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 Guíade API estable.
El siguiente código muestra cómo usar el controlador .NET/C# para conectarse a un clúster Atlas. El código también usa la opción server_api para especificar una versión estable de la API.
using MongoDB.Driver; using MongoDB.Bson; // Replace the placeholder with your Atlas connection string const string connectionUri = "<connection string>"; var settings = MongoClientSettings.FromConnectionString(connectionUri); // Sets the ServerApi field of the settings object to Stable API version 1 settings.ServerApi = new ServerApi(ServerApiVersion.V1); // Creates a new client and connects to the server var client = new MongoClient(settings); // Sends a ping to confirm a successful connection try { var result = client.GetDatabase("admin").RunCommand<BsonDocument>(new BsonDocument("ping", 1)); Console.WriteLine("Pinged your deployment. You successfully connected to MongoDB!"); } catch (Exception ex) { Console.WriteLine(ex);}
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 .NET/C# para conectarse a una implementación local de MongoDB:
using MongoDB.Driver; // Sets the connection URI const string connectionUri = "mongodb://localhost:27017"; // Creates a new client and connects to the server var client = new MongoClient(connectionUri);
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.
El siguiente código muestra cómo usar el controlador .NET/C# para conectarse a un conjunto de réplicas que contiene tres hosts:
using MongoDB.Driver; // Sets the connection URI than includes the list of hosts in the replica set const string connectionUri = "mongodb://host1:27017,host2:27017,host3:27017"; // Creates a new client and connects to the server var client = new MongoClient(connectionUri);
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.
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 y pedir al driver .NET/C# que realice un descubrimiento automático para encontrar los demás. Para indicar al driver que realice un descubrimiento automático, realiza una de las siguientes acciones:
Especifique el nombre del conjunto de réplicas como el valor del parámetro
replicaSet.Especifique
falsecomo valor del parámetrodirectConnection. También puede omitir este parámetro, ya que su valor predeterminado esfalse.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:
using MongoDB.Driver; // Sets the connection URI than includes the replica set name const string connectionUri = "mongodb://host1:27017/?replicaSet=sampleRS"; // Creates a new client and connects to the server var client = new MongoClient(connectionUri);
Nota
Especificación del nombre del conjunto de réplicas
Aunque el driver puede descubrir automáticamente los miembros del set de réplicas sin especificar los nombres de host de todos los miembros o el nombre del set de réplicas, se recomienda especificar el nombre del set de réplicas para evitar casos extremos en los que el set de réplicas no se inicialice correctamente.
El controlador .NET/C# distribuye uniformemente la carga de las operaciones entre las implementaciones accesibles dentro del localThresholdMS valor del cliente. Para obtener más información sobre cómo el controlador .NET/C# distribuye la carga de las operaciones entre varias implementaciones de MongoDB, consulte la guía "Personalizar la selección del servidor".
Nota
El MongoClient constructor no es bloqueante. Al conectarse a un conjunto de réplicas, el constructor retorna inmediatamente mientras el cliente usa subprocesos en segundo plano para conectarse al conjunto de réplicas.
Si construye un MongoClient e inmediatamente 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 conjunto de réplicas.
Conectarse a un solo servidor
Para conectarse a un solo servidor de un conjunto de réplicas en lugar de a todo el conjunto de réplicas, especifique false como valor de la opción de conexión directConnection. Puede hacerlo de dos maneras: pasando un argumento al constructor MongoClient o mediante un parámetro en la cadena de conexión. Seleccione
MongoClientSettings o la pestaña Connection String para ver el código correspondiente.
using MongoDB.Driver; var settings = MongoClientSettings.FromConnectionString("mongodb://host1:27017"); settings.DirectConnection = true; var client = new MongoClient(settings);
using MongoDB.Driver; const string connectionUri = "mongodb://host1:27017/?directConnection=true"; var client = new MongoClient(connectionUri);
Detección de servicios DNS
Para usar la detección de servicios DNS y buscar el registro SRV DNS del servicio al que se conecta, especifique el formato de conexión SRV en la cadena de conexión. Además, si habilita el formato de conexión SRV, el controlador .NET/C# vuelve a escanear automáticamente en busca de nuevos hosts sin tener que cambiar la configuración del cliente.
El siguiente código muestra una cadena de conexión que utiliza el formato de conexión SRV:
var uri = "mongodb+srv://<hostname>"
Para aprender más sobre el formato de conexión SRV, consulta la entrada Formato de conexión SRV en el manual de MongoDB Server.
Documentación de la API
Para obtener más información sobre los tipos analizados en esta guía, consulte la siguiente documentación de API: