Visão geral
Neste guia, você pode aprender como utilizar uma string de conexão e um objeto do Mongo::Client para conectar a diferentes tipos de sistemas MongoDB .
Atlas
Para se conectar a uma MongoDB deployment no Atlas, inclua os seguintes elementos em sua connection string:
URL do seu cluster Atlas
Nome de usuário do MongoDB
Senha do MongoDB
Em seguida, passe sua connection string para o construtor Mongo::Client .
Dica
Siga oguia de conexão do driver do Atlas para recuperar sua connection string.
Ao se conectar ao Atlas, recomendamos usar a opção de cliente Stable API para evitar alterações significativas quando o Atlas atualizar para uma nova versão do MongoDB Server. Para saber mais sobre o recurso de API estável, consulte o guia Conecte-se com a API estável.
O código abaixo mostra como usar o driver Ruby para se conectar a um cluster Atlas . O código também usa o campo server_api para especificar uma versão da API estável.
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
Implantações locais
Para se conectar a uma implantação local do MongoDB autônomo , especifique o host do servidor. Opcionalmente, especifique a porta do servidor e o banco de dados ao qual se conectar. Se nenhuma porta for especificada, a porta padrão será 27017. Se nenhum nome de banco de dados for especificado, o cliente usará o banco de dados admin :
Mongo::Client.new([ 'host1:27017' ], database: 'mydb')
Você também pode especificar o host, a porta e o banco de dados para se conectar usando uma string de conexão:
Mongo::Client.new("mongodb://host1:27017/mydb")
Você também pode especificar seu host como localhost. O seguinte exemplo de código se conecta a localhost na porta padrão, 27017:
client = Mongo::Client.new(["localhost"])
Conjuntos de réplicas
Para se conectar a um conjunto de réplicas, é recomendável especificar todos os nós que fazem parte do conjunto de réplicas. evento um ou mais nós fiquem indisponíveis, a especificação de todos os nós permite que o driver ainda se conecte ao conjunto de réplicas, desde que um nó esteja disponível.
No entanto, é suficiente passar o endereço de qualquer nó do conjunto de réplicas para o driver. O nó não precisa ser o primário e pode ser um nó oculto. Em seguida, o driver descobrirá automaticamente os nós restantes.
O exemplo a seguir mostra como especificar três membros do conjunto de réplicas:
Mongo::Client.new([ 'host1:27017', 'host2:27018', `host3:21019` ], database: 'mydb')
O exemplo a seguir mostra como se conectar ao conjunto de réplicas usando uma string de conexão:
Mongo::Client.new("mongodb://host1:27017,host2:27018,host3:27019/mydb")
O exemplo a seguir mostra como verificar o nome do conjunto de réplicas na conexão usando a opção replica_set ou a opção de string de conexão 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")
Observação
Conjunto de réplicas no Docker
Quando um conjunto de réplicas é executado no Docker, ele pode expor apenas um endpoint MongoDB . Nesse caso, o conjunto de réplicas não é detectável. Especificar directConnection=false em seu URI de conexão ou deixar essa opção sem definir pode impedir que seu aplicação se conecte a ele.
Em um ambiente de teste ou desenvolvimento, é possível conectar-se ao conjunto de réplicas especificando directConnection=true. Em um ambiente de produção, recomendamos configurar o cluster para que cada instância do MongoDB seja acessível fora da rede virtual do Docker.
Descoberta de serviço DNS
Para usar a descoberta de serviços DNS para procurar o registro DNS SRV do serviço ao qual você está se conectando, especifique o formato de conexão SRV em sua string de conexão. Se você especificar este formato, o driver Ruby reanalisa automaticamente novos hosts. Seu sistema pode adicionar hosts à topologia sem exigir alterações na configuração do cliente .
O código a seguir mostra uma string de conexão que usa o formato de conexão SRV:
uri = "mongodb+srv://<hostname>/"
Para saber mais sobre o formato de conexão SRV, consulte a entrada Formato de conexão SRV no manual do MongoDB Server.
Documentação da API
Para saber mais sobre como criar um objeto Mongo::Client com o driver Ruby, consulte a documentação da API para Mongo::Client .