Menu Docs
Página inicial do Docs
/ / /
Driver de fluxos reativos do Java
/

Conecte-se ao MongoDB

Nesta página

  • Pré-requisitos
  • Cliente Mongo
  • Conecte-se a um MongoDB deployment standalone
  • Conectar a um conjunto de réplicas
  • Conecte-se a um cluster fragmentado
  • Opções de conexão

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.

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;

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.

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 porta 27017:

    MongoClient mongoClient = MongoClients.create();
  • Especifique explicitamente o hostname para se conectar a uma instância do MongoDB em execução no host especificado na porta 27017:

    MongoClient mongoClient = MongoClients.create(
    MongoClientSettings.builder()
    .applyToClusterSettings(builder ->
    builder.hosts(Arrays.asList(new ServerAddress("hostOne"))))
    .build());
  • Especifique explicitamente o hostname e o port:

    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");

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());

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 em localhost: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());

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);

Voltar

Tutorials