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 utilizar un ejemplo de conexión de esta página, copie el ejemplo de código en el Aplicación de ejemplo 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 deescritura de 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 controlador Java Reactive Streams 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 conectarse a un clúster fragmentado, especifique la mongos instancia o instancias en el MongoClients.create() método. Para obtener más información sobre los clústeres fragmentados, consulte Fragmentación en el manual del servidor.

Puede conectarse a una sola instancia 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();

Puede conectarse a varias instancias mongos de las siguientes maneras:

  • Especifique la cadena de conexión que contendrá sus nombres de host y 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.

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

Por ejemplo, puede especificar configuraciones de autenticación y TLS/SSL 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 puede utilizar una instancia 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 necesite combinar una cadena de conexión con la 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