Conecte-se ao MongoDB
Nesta página
Este guia descreve como usar o driver Java Reactive Streams para se conectar ao MongoDB.
Use o método MongoClients.create()
para fazer uma conexão com uma MongoDB deployment em execução.
Importante
Os exemplos seguintes não fornecem uma lista exaustiva de maneiras de instanciar um MongoClient
. Para obter uma lista completa dos MongoClient
métodos de fábrica , consulte a documentação da API do MongoClients.
Observação
É altamente recomendável que as configurações de manutenção de atividade do sistema sejam configuradas com tempos limite mais curtos.
Consulte O tempo de manutenção de atividade do TCP afeta as implementações do MongoDB ? pergunta e resposta no manual do servidor Perguntas frequentes para obter mais informações.
Pré-requisitos
Você deve configurar os seguintes componentes para executar os exemplos de código neste guia:
Um MongoDB deployment em execução para se conectar. Por exemplo, para se conectar a um autônomo , você deve ter acesso a um sistema autônomo em execução.
Dependência do driver instalada em seu projeto. Para saber como instalar o driver, consulte oguia de instalaçãodo .
As seguintes declarações de importação:
import com.mongodb.reactivestreams.client.MongoClients; import com.mongodb.reactivestreams.client.MongoClient; import com.mongodb.MongoClientSettings; import com.mongodb.ConnectionString; import com.mongodb.ServerAddress; import com.mongodb.MongoCredential; import java.util.Arrays;
Cliente Mongo
Uma instância do MongoClient
representa um grupo de conexões para o banco de dados de dados. Você precisa de apenas uma instância de MongoClient
, mesmo ao executar várias operações simultâneas.
Importante
Normalmente, você cria apenas uma instância do MongoClient
para uma determinada implantação do MongoDB, como uma implantação independente, um conjunto de réplicas ou um cluster fragmentado, e usa o cliente em seu aplicativo. No entanto, se você criar várias instâncias, tenha em mente o seguinte:
Todos os limites de uso de recursos (por exemplo, conexões máximas) se aplicam a cada instância do
MongoClient
.Para descartar uma instância, chame o método
MongoClient.close()
para limpar recursos.
Conecte-se a um MongoDB deployment standalone
O exemplo a seguir mostra várias maneiras de se conectar a uma única implantação do MongoDB.
Você pode se conectar a um único MongoDB deployment das seguintes maneiras:
Instancie um objeto
MongoClient
sem nenhum parâmetro para se conectar a um servidor MongoDB em execução no localhost na porta27017
:MongoClient mongoClient = MongoClients.create(); Especifique explicitamente o
hostname
para se conectar a uma instância do MongoDB em execução no host especificado na porta27017
:MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Arrays.asList(new ServerAddress("hostOne")))) .build()); Especifique explicitamente o
hostname
e oport
:MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Arrays.asList(new ServerAddress("hostOne", 27018)))) .build()); Especifique o
ConnectionString
:MongoClient mongoClient = MongoClients.create("mongodb://hostOne:27017");
Conectar a um conjunto de réplicas
Para conectar a um conjunto de réplicas, você deve especificar um ou mais membros para o método MongoClients.create()
. Para saber mais sobre conjuntos de réplicas, consulte Replicação no manual do servidor MongoDB.
Observação
O MongoDB descobre automaticamente os nós primários e secundários em um conjunto de réplicas.
Você pode se conectar a um conjunto de réplicas MongoDB especificando os membros em um ConnectionString
.
O exemplo a seguir mostra como especificar três membros do conjunto de réplicas:
MongoClient mongoClient = MongoClients.create("mongodb://host1:27017,host2:27017,host3:27017");
O exemplo seguinte mostra como especificar membros do conjunto de réplica e a opção replicaSet
com o nome do conjunto de réplica:
MongoClient mongoClient = MongoClients.create("mongodb://host1:27017,host2:27017,host3:27017/?replicaSet=myReplicaSet");
O exemplo a seguir mostra como especificar uma lista de instâncias ServerAddress
correspondentes a todos os membros do conjunto de réplicas:
MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Arrays.asList( new ServerAddress("host1", 27017), new ServerAddress("host2", 27017), new ServerAddress("host3", 27017)))) .build());
Conecte-se a um cluster fragmentado
Para se conectar a um cluster fragmentado, especifique a instância mongos
ou instâncias para o método MongoClients.create()
. Para saber mais sobre clusters sharded, consulte Sharding no manual do servidor MongoDB.
Você pode se conectar a uma única instância do mongos
das seguintes maneiras:
Especifique o nome do host e a porta em um
ConnectionString
:MongoClient mongoClient = MongoClients.create( "mongodb://localhost:27017" ); Exclua a connection string se o
mongos
estiver sendo executado emlocalhost:27017
:MongoClient mongoClient = MongoClients.create();
Você pode se conectar a múltiplas instâncias do mongos
das seguintes maneiras:
Especifique
ConnectionString
para conter seus nomes de host e portas:MongoClient mongoClient = MongoClients.create("mongodb://host1:27017,host2:27017"); Especifique uma lista dos objetos
ServerAddress
correspondentes a cada instância:MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Arrays.asList( new ServerAddress("host1", 27017), new ServerAddress("host2", 27017)))) .build());
Opções de conexão
Você pode especificar as configurações de conexão usando os tipos ConnectionString
ou MongoClientSettings
, ou ambos.
Por exemplo, você pode especificar configurações de autenticação e TLS/SSL na string de conexão:
MongoClient mongoClient = MongoClients.create("mongodb://user1:pwd1@host1/?authSource=db1&ssl=true");
Você também pode usar uma instância MongoClientSettings
para especificar TLS/SSL e o tipo MongoCredential
para armazenar as informações de autenticação:
String user; // the username String database; // the name of the database in which the user is defined char[] password; // the password as a character array // ... MongoCredential credential = MongoCredential.createCredential(user, database, password); MongoClientSettings settings = MongoClientSettings.builder() .credential(credential) .applyToSslSettings(builder -> builder.enabled(true)) .applyToClusterSettings(builder -> builder.hosts(Arrays.asList(new ServerAddress("host1", 27017)))) .build(); MongoClient mongoClient = MongoClients.create(settings);
Em alguns casos, talvez seja necessário combinar uma string de conexão com configuração programática:
ConnectionString connectionString = new ConnectionString("mongodb://host1:27107,host2:27017/?ssl=true"); CommandListener myCommandListener = ...; MongoClientSettings settings = MongoClientSettings.builder() .addCommandListener(myCommandListener) .applyConnectionString(connectionString) .build(); MongoClient mongoClient = MongoClients.create(settings);