Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Conéctese a MongoDB

Esta página contiene ejemplos de código que muestran cómo conectar su aplicación Java Reactive Streams a MongoDB con varias configuraciones.

Tip

Para obtener más información sobre las opciones de conexión de esta página, consulta el enlace proporcionado en cada sección.

Para usar un ejemplo de conexión de esta página, copia el ejemplo de código en el aplicación de muestra o su propia aplicación. Asegúrese de reemplazar todos los marcadores de posición en los ejemplos de código, como <Atlas connection string>, con los valores relevantes para su implementación de MongoDB.

Importante

Proyecto Reactor librería

Esta guía utiliza la biblioteca Project Reactor para consumir Publisher instancias devueltas por los métodos del controlador Java Reactive Streams. Para obtener más información sobre la biblioteca Project Reactor y cómo usarla, consulte Introducción en la documentación de Reactor. Para obtener más información sobre cómo usamos los métodos de la biblioteca Project Reactor en esta guía, consulte Guía Guardar datos en MongoDB.

Puede utilizar la siguiente aplicación de muestra para probar los ejemplos de código en esta página. Para usar la aplicación de muestra, siga los siguientes pasos:

  1. Crea un nuevo proyecto Java en tu IDE.

  2. Instale el driver de Reactive Streams de Java en su proyecto Java.

  3. Instale la biblioteca Project Reactor en su proyecto Java.

  4. Copie el siguiente código y péguelo en un nuevo archivo Java llamado ConnectionApp.java.

  5. Copia un ejemplo de código de esta página y pégalo en las líneas especificadas del archivo.

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 conectarte a un clúster fragmentado, especifica la instancia o instancias mongos en el método MongoClients.create(). Para obtener más información sobre clústeres, consulte Particionado en el manual del Servidor.

Puedes conectarte a una sola instancia de mongos de las siguientes maneras:

  • Especifica el hostname y el puerto en una cadena de conexión, como se muestra en el siguiente código:

    MongoClient mongoClient = MongoClients.create( "mongodb://<hostname>:<port>" );
  • Excluye la cadena de conexión si mongos se ejecuta en localhost:27017, como se muestra en el siguiente código:

    MongoClient mongoClient = MongoClients.create();

Puedes conectarte a varias instancias de mongos de las siguientes maneras:

  • Specifique que la cadena de conexión contenga los nombres de host y los puertos, como se muestra en el siguiente código:

    MongoClient mongoClient = MongoClients.create("mongodb://<first hostname>:<first port>,<second hostname>:<second port>");
  • Especifique una lista de los ServerAddress objetos correspondientes a cada instancia, como se muestra en el siguiente código:

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

Importante

El controlador Java Reactive Streams no admite objetos UnixServerAddress ni conexiones de socket de dominio. Para usar un socket de dominio para conectarse, utilice el controlador Java Sync. De lo contrario, utilice un objeto ServerAddress para conectarse desde el controlador Java Reactive Streams.

Puedes especificar la configuración de la conexión utilizando la cadena de conexión o los tipos MongoClientSettings, o ambos.

Por ejemplo, puedes especificar los ajustes de TLS/SSL y autenticación en la cadena de conexión, como se muestra en el siguiente código:

MongoClient mongoClient = MongoClients.create("mongodb://user1:pwd1@host1/?authSource=db1&ssl=true");

También puedes utilizar una instancia de MongoClientSettings para especificar TLS/SSL y el tipo MongoCredential para almacenar la información de autenticación, como se muestra en el siguiente código:

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

En algunos casos, es posible que necesites combinar una cadena de conexión con una configuración programática, como se muestra en el siguiente código:

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

Volver

Próximos pasos

En esta página