Docs Menu
Docs Home
/ /
Tutorials
/ / /

Conéctese a MongoDB

Esta guía describe cómo utilizar el controlador Java Reactive Streams para conectarse a MongoDB.

Uso el MongoClients.create() Método para realizar una conexión a una implementación de MongoDB en ejecución.

Importante

Los siguientes ejemplos no ofrecen una lista exhaustiva de maneras de instanciar MongoClient un. Para obtener una lista completa de los MongoClient métodos de fábrica, consulte la documentación de la API de MongoClients.

Nota

Recomendamos encarecidamente que las configuraciones de mantenimiento del sistema se configuren con tiempos de espera más cortos.

Consulte la pregunta y respuesta ¿El tiempo de keepalive de TCP afecta las implementaciones de MongoDB? en las Preguntas frecuentes del manual del servidor para obtener más información.

Debe configurar los siguientes componentes para ejecutar los ejemplos de código de esta guía:

  • Una implementación de MongoDB en ejecución a la que conectarse. Por ejemplo, para conectarse a una implementación independiente, debe tener acceso a ella.

  • Dependencia del controlador instalada en su proyecto. Para saber cómo instalar el controlador, consulte Guía de instalación.

  • Las siguientes declaraciones de importación:

    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;

Una instancia MongoClient representa un conjunto de conexiones a la base de datos. Solo se necesita una instancia de MongoClient, incluso al ejecutar varias operaciones simultáneas.

Importante

Normalmente, se crea solo una instancia MongoClient para una implementación de MongoDB, como una implementación independiente, un conjunto de réplicas o un clúster fragmentado, y se usa el cliente en toda la aplicación. Sin embargo, si crea varias instancias, tenga en cuenta lo siguiente:

  • Todos los límites de uso de recursos (por ejemplo, conexiones máximas) se aplican a cada instancia MongoClient.

  • Para eliminar una instancia, llame al método MongoClient.close() para limpiar recursos.

El siguiente ejemplo muestra varias formas de conectarse a una única implementación de MongoDB.

Puede conectarse a una única implementación de MongoDB de las siguientes maneras:

  • Cree una instancia de un objeto MongoClient sin ningún parámetro para conectarse a un servidor MongoDB que se ejecuta en el host local en el puerto 27017:

    MongoClient mongoClient = MongoClients.create();
  • Especifique explícitamente hostname para conectarse a una instancia de MongoDB que se ejecuta en el host especificado en el puerto 27017:

    MongoClient mongoClient = MongoClients.create(
    MongoClientSettings.builder()
    .applyToClusterSettings(builder ->
    builder.hosts(Arrays.asList(new ServerAddress("hostOne"))))
    .build());
  • Especifique explícitamente el hostname y el port:

    MongoClient mongoClient = MongoClients.create(
    MongoClientSettings.builder()
    .applyToClusterSettings(builder ->
    builder.hosts(Arrays.asList(new ServerAddress("hostOne", 27018))))
    .build());
  • Especifique ConnectionString:

    MongoClient mongoClient = MongoClients.create("mongodb://hostOne:27017");

Para conectarse a un conjunto de réplicas, debe especificar uno o más miembros en el MongoClients.create() método. Para obtener más información sobre los conjuntos de réplicas, consulte Replicación en el manual del servidor.

Nota

MongoDB descubre automáticamente los nodos primarios y secundarios en un conjunto de réplicas.

Puede conectarse a un conjunto de réplicas de MongoDB especificando los miembros en un ConnectionString.

El siguiente ejemplo muestra cómo especificar tres miembros del conjunto de réplicas:

MongoClient mongoClient = MongoClients.create("mongodb://host1:27017,host2:27017,host3:27017");

El siguiente ejemplo muestra cómo especificar miembros del conjunto de réplicas y la opción replicaSet con el nombre del conjunto de réplicas:

MongoClient mongoClient = MongoClients.create("mongodb://host1:27017,host2:27017,host3:27017/?replicaSet=myReplicaSet");

El siguiente ejemplo muestra cómo especificar una lista de ServerAddress instancias correspondientes a todos los miembros del 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 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:

  • Especifique el nombre de host y el puerto en un ConnectionString:

    MongoClient mongoClient = MongoClients.create( "mongodb://localhost:27017" );
  • Excluir la cadena de conexión si mongos se ejecuta en localhost:27017:

    MongoClient mongoClient = MongoClients.create();

Puede conectarse a varias instancias mongos de las siguientes maneras:

  • Especifique ConnectionString para contener sus nombres de host y puertos:

    MongoClient mongoClient = MongoClients.create("mongodb://host1:27017,host2:27017");
  • Especifique una lista de los ServerAddress objetos correspondientes a cada instancia:

    MongoClient mongoClient = MongoClients.create(
    MongoClientSettings.builder()
    .applyToClusterSettings(builder ->
    builder.hosts(Arrays.asList(
    new ServerAddress("host1", 27017),
    new ServerAddress("host2", 27017))))
    .build());

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

Por ejemplo, puede especificar configuraciones de autenticación y TLS/SSL en la cadena de conexión:

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:

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 la configuración 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);

Volver

Tutorials

En esta página