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

Conecte-se ao MongoDB

Nesta página

  • Visão geral
  • Conexão
  • Sistemas locais
  • Atlas
  • Conjunto de réplicas
  • Cluster fragmentado
  • Opções de conexão

Esta página contém exemplos de código que mostram como conectar seu aplicação Java Reactive Streams ao MongoDB com várias configurações.

Dica

Para saber mais sobre as opções de conexão nesta página, consulte o link fornecido em cada seção.

Para usar um exemplo de conexão desta página, copie o exemplo de código noaplicativo de amostra ou em seu próprio aplicativo. Certifique-se de substituir todos os espaços reservados nos exemplos de código, como <Atlas connection string>, pelos valores relevantes para sua implantação do MongoDB.

Importante

Biblioteca do Reator do Projeto

Este guia usa a biblioteca Project Reactor para consumir instâncias do Publisher retornadas pelos métodos de driver Java Reactive Streams. Para saber mais sobre a biblioteca do Project Reactor e como usá-la, consulte Introdução na documentação do Reactor. Para saber mais sobre como usamos os métodos da biblioteca do Project Reactor neste guia, consulte o guia Gravar dados no MongoDB .

Você pode usar o seguinte aplicativo de exemplo para testar os exemplos de código nesta página. Para usar o aplicativo de amostra, execute as seguintes etapas:

  1. Crie um novo projeto Java no seu IDE.

  2. Instale o driver Java Reactive Streams em seu projeto Java .

  3. Instale a biblioteca do Project Reactor em seu projeto Java .

  4. Copie o código a seguir e cole-o em um novo arquivo Java chamado ConnectionApp.java.

  5. Copie um exemplo de código desta página e cole-o nas linhas especificadas no arquivo.

1import com.mongodb.ConnectionString;
2import com.mongodb.MongoClientSettings;
3import com.mongodb.ServerApi;
4import com.mongodb.ServerApiVersion;
5
6import org.bson.BsonDocument;
7import org.bson.BsonInt64;
8import org.bson.Document;
9
10import com.mongodb.reactivestreams.client.MongoClient;
11import com.mongodb.reactivestreams.client.MongoClients;
12import com.mongodb.reactivestreams.client.MongoDatabase;
13import org.bson.conversions.Bson;
14import reactor.core.publisher.Mono;
15
16class ConnectionApp {
17 public static void main(String[] args) {
18 //start example code here
19
20 //end example code here
21 {
22 Bson command = new BsonDocument("ping", new BsonInt64(1));
23 MongoDatabase database = mongoClient.getDatabase("admin");
24 Publisher<Document> MonoPublisher = database.runCommand(command);
25
26 Mono.from(MonoPublisher)
27 .doOnSuccess(x -> System.out.println("Pinged your deployment. You successfully connected to MongoDB!"))
28 .doOnError(err -> System.out.println("Error: " + err.getMessage()))
29 .block();
30
31 //other application code
32
33 }
34 }
35}
String uri = "mongodb://<hostname>:<port>/";
try (MongoClient mongoClient = MongoClients.create(uri))
String uri = "<Atlas connection string>";
ServerApi serverApi = ServerApi.builder()
.version(ServerApiVersion.V1)
.build();
MongoClientSettings settings = MongoClientSettings.builder()
.applyConnectionString(new ConnectionString(uri))
.serverApi(serverApi)
.build();
try (MongoClient mongoClient = MongoClients.create(settings))
String uri = "mongodb://<replica set member>:<port>/?replicaSet=<replica set name>";
try (MongoClient mongoClient = MongoClients.create(uri))

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 uma string de conexão, conforme mostrado no código a seguir:

    MongoClient mongoClient = MongoClients.create( "mongodb://<hostname>:<port>" );
  • Exclua a string de conexão se o mongos estiver sendo executado em localhost:27017, conforme mostrado no seguinte código:

    MongoClient mongoClient = MongoClients.create();

Você pode se conectar a múltiplas instâncias do mongos das seguintes maneiras:

  • Especifique a string de conexão para conter seus nomes de host e portas, conforme mostrado no seguinte código:

    MongoClient mongoClient = MongoClients.create("mongodb://<first hostname>:<first port>,<second hostname>:<second port>");
  • Especifique uma lista dos objetos ServerAddress correspondentes a cada instância, conforme mostrado no código a seguir:

    MongoClient mongoClient = MongoClients.create(
    MongoClientSettings.builder()
    .applyToClusterSettings(builder ->
    builder.hosts(Arrays.asList(
    new ServerAddress("<first hostname>", <first port>),
    new ServerAddress("<second hostname", <second port>))))
    .build());

Você pode especificar as configurações de conexão usando a string de conexão ou os tipos MongoClientSettings , ou ambos.

Por exemplo, você pode especificar TLS/SSL e configurações de autenticação na string de conexão, conforme mostrado no código a seguir:

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, conforme mostrado no código a seguir:

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, conforme mostrado no código a seguir:

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

Próximos passos