Conecte-se ao MongoDB
Neste guia, você aprenderá como se conectar a uma implantação do MongoDB Atlas, uma instância do MongoDB ou a um conjunto de réplicas usando o driver Java.
Você pode ver um exemplo de código para se conectar a um cluster do Atlas ou continuar lendo para saber mais sobre a classe MongoClient
e os URIs de conexão.
Cliente Mongo
Você pode se conectar e se comunicar com MongoDB usando a classe MongoClient
.
Utilize o método MongoClients.create()
para construir um MongoClient
.
Importante
Reutilize seu cliente
Como cada MongoClient
representa um repositório seguro de conexões com o banco de dados, a maioria dos aplicativos requer apenas uma única instância de um MongoClient
, mesmo em várias threads. Para saber mais sobre como os pools de conexão funcionam no driver, consulte a página de perguntas frequentes.
Todos os limites de uso de recursos, como conexões máximas, se aplicam a instâncias individuais do MongoClient
.
Para saber mais sobre as diferentes configurações que você pode utilizar para controlar o comportamento do seu MongoClient
, consulte o guia em Configurações do MongoClient.
Dica
Sempre chame MongoClient.close()
para limpar recursos quando uma instância não for mais necessária.
URI de conexão
O URI de conexão fornece um conjunto de instruções que o driver utiliza para se conectar a uma implantação MongoDB. Ele instrui o driver sobre como deve se conectar ao MongoDB e como deve se comportar enquanto conectado. A figura a seguir explica cada parte de um URI de conexão de amostra:
Neste exemplo, você se conecta a uma implantação do Atlas MongoDB que tem um registro DNS SRV. Para obter mais detalhes, consulte a documentação do Formato de Conexão da Lista de Sementes DNS . Este formato oferece flexibilidade na implantação e a capacidade de alterar os servidores em rotação sem reconfigurar os clientes.
Observação
Se a sua implantação estiver no MongoDB Atlas, consulte o guia de conexão do driver do Atlas e selecione Java no menu suspenso de idioma para recuperar sua string de conexão.
Se você estiver se conectando a uma instância ou conjunto de réplicas que não tenha um endereço SRV DNS, deverá usar mongodb
para o protocolo, que especifica o Formato Padrão de Connection String.
Após o protocolo, a connection string contém suas credenciais se você estiver usando um mecanismo de autenticação baseado em senha. Substitua o valor de user
pelo seu nome de usuário e pass
pela sua senha. Se o mecanismo de autenticação não exigir credenciais, omita esta parte do URI de conexão.
A próxima parte do URI de conexão especifica o nome do host ou endereço IP, seguido pela porta da sua instância do MongoDB. No exemplo, sample.host
representa o nome do host e 27017
é o número da porta. Substitua estes valores para consultar a sua instância MongoDB.
A última parte do URI de conexão contém opções de conexão como parâmetros. No exemplo, você define duas opções de conexão: maxPoolSize=20
e w=majority
. Para obter mais informações sobre as opções de conexão, vá para a seção Opções de conexão deste guia.
Exemplo de conexão do Atlas
Para se conectar a uma implementação do MongoDB no Atlas, crie um cliente. Você pode criar um cliente que use sua conexão e outras opções do cliente passando um objeto MongoClientSettings
para o método MongoClients.create()
.
Para instanciar um objeto MongoClientSettings
, use o método builder para especificar sua string de conexão e quaisquer outras opções de cliente e, em seguida, chame o método build()
. Encadeie o método applyConnectionString()
ao construtor para especificar seu URI de conexão.
Você pode definir a opção de cliente da versão Stable API para evitar alterações significativas ao atualizar para uma nova versão do servidor MongoDB. Para saber mais sobre o recurso de API estável, consulte a página de API estável.
O código a seguir mostra como você pode especificar a cadeia de conexão e a opção de cliente Stable API ao se conectar a uma implementação do MongoDB no Atlas e verificar se a conexão foi bem-sucedida:
package fundamentals; import com.mongodb.*; import org.bson.BsonDocument; import org.bson.BsonInt64; import org.bson.Document; import org.bson.conversions.Bson; import com.mongodb.client.MongoClient; import com.mongodb.client.MongoClients; import com.mongodb.client.MongoDatabase; public class MongoClientConnectionExample { public static void main(String[] args) { // Replace the placeholder with your Atlas connection string String uri = "<connection string>"; // Construct a ServerApi instance using the ServerApi.builder() method ServerApi serverApi = ServerApi.builder() .version(ServerApiVersion.V1) .build(); MongoClientSettings settings = MongoClientSettings.builder() .applyConnectionString(new ConnectionString(uri)) .serverApi(serverApi) .build(); // Create a new client and connect to the server try (MongoClient mongoClient = MongoClients.create(settings)) { MongoDatabase database = mongoClient.getDatabase("admin"); try { // Send a ping to confirm a successful connection Bson command = new BsonDocument("ping", new BsonInt64(1)); Document commandResult = database.runCommand(command); System.out.println("Pinged your deployment. You successfully connected to MongoDB!"); } catch (MongoException me) { System.err.println(me); } } } }
Outras maneiras de se conectar ao MongoDB
Se estiver se conectando a uma única implementação ou conjunto de réplicas do MongoDB que não esteja hospedado no Atlas, consulte as seções a seguir para saber como se conectar.
Conecte-se a uma implementação do MongoDB em sua máquina local
Se você precisar executar uma implementação do MongoDB em seu computador local para fins de desenvolvimento, em vez de usar um cluster do Atlas, será necessário realizar o seguinte:
Baixe a versão Comunidade ou Enterprise do MongoDB Server.
Instale e configure o servidor MongoDB.
Inicie a implementação.
Importante
Sempre proteja sua implantação do MongoDB contra ataques maliciosos. Consulte nossa Lista de verificação de segurança para obter uma lista de recomendações de segurança.
Depois de iniciar com êxito a implementação do MongoDB, especifique sua connection string no código de conexão do driver.
Se a implementação do MongoDB estiver sendo executada localmente, você poderá usar a connection string "mongodb://localhost:<port>"
, em que <port>
é o número da porta que você configurou no servidor para escutar as conexões de entrada.
Se você precisar especificar um nome de host ou endereço IP diferente, consulte a entrada do Manual do servidor sobre strings de conexão.
Para testar se você pode se conectar à sua implantação, substitua a string de conexão no exemplo de código Connect to MongoDB Atlas e execute-a.
Conectar a um conjunto de réplicas
Um sistema do conjunto de réplicas MongoDB é um grupo de instâncias conectadas que armazenam o mesmo conjunto de dados. Esta configuração de instâncias fornece redundância de dados e alta disponibilidade de dados.
Para se conectar a um sistema de conjunto de réplicas, especifique o nome de host (ou endereço IP) e o número de porta dos membros do conjunto de réplicas.
Se não for possível fornecer uma lista completa de hosts no conjunto de réplicas, você poderá especificar um único ou um subconjunto de hosts na réplica e instruir o driver a executar a descoberta automática de uma das seguintes maneiras:
Especifique o nome do conjunto de réplica como o valor do parâmetro
replicaSet
Especifique
false
como o valor do parâmetrodirectConnection
Especifique mais de um host no conjunto de réplicas
Dica
Embora você possa especificar um subconjunto dos hosts em um conjunto de réplicas, inclua todos os hosts no conjunto de réplicas para garantir que o driver possa estabelecer a conexão se um dos hosts estiver inacessível.
Os exemplos seguintes mostram como especificar múltiplos hosts para uma instância do MongoClient
utilizando a classe ConnectionString
ou MongoClientSettings
. Selecione a aba que corresponde à sua turma preferida.
ConnectionString connectionString = new ConnectionString("mongodb://host1:27017,host2:27017,host3:27017/"); MongoClient mongoClient = MongoClients.create(connectionString);
ServerAddress seed1 = new ServerAddress("host1", 27017); ServerAddress seed2 = new ServerAddress("host2", 27017); ServerAddress seed3 = new ServerAddress("host3", 27017); MongoClientSettings settings = MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Arrays.asList(seed1, seed2, seed3))) .build(); MongoClient mongoClient = MongoClients.create(settings);