Overview
En esta guía, puedes aprender a usar una cadena de conexión y un objeto Mongo::Client para conectarte a diferentes tipos de implementación de MongoDB.
Atlas
Para conectarte a una implementación de MongoDB en Atlas, incluye los siguientes elementos en tu cadena de conexión:
URL de tu clúster de Atlas
Nombre de usuario de MongoDB
Contraseña de MongoDB
Luego, pasa tu cadena de conexión al constructor de Mongo::Client.
Tip
Siga la guía de conexión del driver Atlas para recuperar su cadena de conexión.
Cuando te conectes a Atlas, recomendamos utilizar la opción del cliente Stable API para evitar cambios disruptivos cuando Atlas se actualice a una nueva versión de MongoDB Server. Para obtener más información sobre la funcionalidad Stable API, consulte la guía Connect with Stable API.
El siguiente código muestra cómo utilizar el controlador de Ruby para conectarse a un clúster de Atlas. El código también utiliza el campo server_api para especificar una versión Stable API.
require 'mongo' # Replace the placeholders with your credentials uri = "<connection string>" # Sets the server_api field of the options object to Stable API version 1 options = { server_api: { version: '1' } } # Creates a new client and connect to the server client = Mongo::Client.new(uri, options) # Sends a ping to confirm a successful connection begin admin_client = client.use('admin') result = admin_client.database.command(ping: 1).documents.first puts "Pinged your deployment. You successfully connected to MongoDB!" rescue Mongo::Error::OperationFailure => ex puts ex ensure client.close end
Implementaciones locales
Para conectarse a una implementación local autónomo de MongoDB, especifica el host del servidor. Opcionalmente, especifica el puerto del servidor y de la base de datos a la que deseas conectarte. Si no se especifica un puerto, el puerto por defecto es 27017. Si no se especifica un nombre de base de datos, el cliente usará la base de datos admin:
Mongo::Client.new([ 'host1:27017' ], database: 'mydb')
También puedes especificar el host, el puerto y la base de datos a la que te conectarás usando una cadena de conexión:
Mongo::Client.new("mongodb://host1:27017/mydb")
También puedes especificar tu host como localhost. El siguiente ejemplo de código se conecta a localhost en el puerto por defecto, 27017:
client = Mongo::Client.new(["localhost"])
Sets de réplicas
Para conectarse a un set de réplicas, se recomienda especificar todos los nodos que forman parte del set de réplicas. En caso de que uno o varios nodos no estén disponibles, al especificar todos los nodos se permite que el driver se conecte aún al set de réplicas, siempre que haya un nodo disponible.
Sin embargo, es suficiente con pasar la dirección de cualquiera de los nodos del set de réplicas al driver. El nodo no tiene que ser el primario y puede ser un nodo oculto. El controlador luego descubrirá automáticamente los nodos restantes.
El siguiente ejemplo muestra cómo especificar tres nodos del set de réplicas:
Mongo::Client.new([ 'host1:27017', 'host2:27018', `host3:21019` ], database: 'mydb')
El siguiente ejemplo muestra cómo conectarse al set de réplicas usando una cadena de conexión:
Mongo::Client.new("mongodb://host1:27017,host2:27018,host3:27019/mydb")
El siguiente ejemplo muestra cómo verificar el nombre del set de réplicas al conectarse mediante la opción replica_set o la opción de cadena de conexión replicaSet:
Mongo::Client.new([ 'host1:27017', 'host2:27018', 'host3:27019' ], database: 'mydb', replica_set: 'myapp') # Or by using a connection string: Mongo::Client.new("mongodb://host1:27017,host2:27018,host3:27019/mydb?replicaSet=myapp")
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.
Detección de servicios DNS
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. Si especificas este formato, el driver de Ruby vuelve a escanear automáticamente la presencia de nuevos hosts. Su implementación puede añadir hosts a su topología sin requerir cambios en la configuración del cliente.
El siguiente código muestra una cadena de conexión que utiliza el formato de conexión SRV:
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 cómo crear un objeto Mongo::Client con el controlador de Ruby, consulte la documentación de la API de Mongo::Client .