Conecte-se ao MongoDB
Nesta página
Visão geral
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 Publisher
instâncias do retornadas pelos métodos de driver Java Reactive Streams. Para saber mais sobre a biblioteca do Projeto 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:
Crie um novo projeto Java no seu IDE.
Instale o driver Java Reactive Streams em seu projeto Java .
Instale a biblioteca do Project Reactor em seu projeto Java .
Copie o código a seguir e cole-o em um novo arquivo Java chamado
ConnectionApp.java
.Copie um exemplo de código desta página e cole-o nas linhas especificadas no arquivo.
1 import com.mongodb.ConnectionString; 2 import com.mongodb.MongoClientSettings; 3 import com.mongodb.ServerApi; 4 import com.mongodb.ServerApiVersion; 5 6 import org.bson.BsonDocument; 7 import org.bson.BsonInt64; 8 import org.bson.Document; 9 10 import com.mongodb.reactivestreams.client.MongoClient; 11 import com.mongodb.reactivestreams.client.MongoClients; 12 import com.mongodb.reactivestreams.client.MongoDatabase; 13 import org.bson.conversions.Bson; 14 import reactor.core.publisher.Mono; 15 16 class 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 }
Conexão
Sistemas locais
String uri = "mongodb://<hostname>:<port>/"; try (MongoClient mongoClient = MongoClients.create(uri))
Atlas
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))
Conjunto de réplicas
String uri = "mongodb://<replica set member>:<port>/?replicaSet=<replica set name>"; try (MongoClient mongoClient = MongoClients.create(uri))
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 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 emlocalhost: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());
Opções de conexão
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);