Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Elija un destino de conexión

En esta guía, puedes aprender a usar una cadena de conexión y un objeto MongoClient para conectarte a diferentes tipos de implementación de MongoDB.

Para conectarte a una implementación de MongoDB en Atlas, incluye los siguientes elementos en tu cadena de conexión:

  • URL de tu clúster de Atlas

  • Nombre de usuario de MongoDB

  • Contraseña de MongoDB

Luego, pase su cadena de conexión al método create() para construir un objeto MongoClient.

Tip

Siga la guía de conexión del driver Atlas para recuperar su cadena de conexión.

Cuando te conectes a Atlas, te recomendamos utilizar la opción Stable API cliente para evitar cambios disruptivos cuando Atlas se actualice a una nueva versión de MongoDB Server. Para aprender más acerca de la funcionalidad de Stable API, consulta Stable API en el manual de MongoDB Server.

El siguiente código muestra cómo usar el controlador Java Reactive Streams para conectarse a un clúster de Atlas. El código utiliza la opción serverApi para especificar una Stable API.

Importante

Métodos de la librería Reactor

Esta guía utiliza métodos de la Librería Reactor, una librería basada en la especificación de Reactive Streams. Para instalar Reactor, consulta Obtener Reactor en la documentación de Proyecto Reactor.

import com.mongodb.ConnectionString;
import com.mongodb.MongoClientSettings;
import com.mongodb.ServerApi;
import com.mongodb.ServerApiVersion;
import org.bson.BsonDocument;
import org.bson.BsonInt64;
import com.mongodb.reactivestreams.client.MongoClient;
import com.mongodb.reactivestreams.client.MongoClients;
import com.mongodb.reactivestreams.client.MongoDatabase;
import org.bson.conversions.Bson;
import reactor.core.publisher.Mono;
public class testing {
public static void main(String[] args) {
// Replace the placeholder with your Atlas connection string
String uri = "<connection string>";
// Construct a ServerApi instance using the ServerApi.builder() method
ServerApi serverApi = ServerApi.builder()
.version(ServerApiVersion.V1)
.build();
MongoClientSettings settings = MongoClientSettings.builder()
.applyConnectionString(new ConnectionString(uri))
.serverApi(serverApi)
.build();
// Create a new client and connect to the server
try (MongoClient mongoClient = MongoClients.create(settings))
{
MongoDatabase database = mongoClient.getDatabase("<database name>");
Bson command = new BsonDocument("ping", new BsonInt64(1));
Mono.from(database.runCommand(command))
.doOnSuccess(x -> System.out.println("Pinged your deployment. You successfully connected to MongoDB!"))
.doOnError(err -> System.out.println("Error: " + err.getMessage()))
.block();
}
}
}

Para conectarse a una implementación local de MongoDB, use localhost como el nombre de host. Por defecto, el proceso mongod se ejecuta en el puerto 27017, aunque puedes personalizarlo para tu implementación.

El siguiente código muestra cómo utilizar el controlador de Java Reactive Streams para conectarse a una implementación local de MongoDB:

import com.mongodb.reactivestreams.client.MongoClients;
import com.mongodb.reactivestreams.client.MongoClient;
public class MongoConnection {
public static void main(String[] args) {
String uri = "mongodb://localhost:27017/";
try (MongoClient client = MongoClients.create(uri)) {
// use `client` here
}
}
}

Para conectar a un set de réplicas, especifique los nombres de host (o direcciones IP) y los números de puerto de los miembros del set de réplicas en su cadena de conexión.

Si no se puede proporcionar una lista completa de hosts en el set de réplicas, se pueden especificar uno o más hosts en el set de réplicas e instruir al driver de Java Reactive Streams para que realice el descubrimiento automático y encuentre los demás. Para indicar al controlador que realice el descubrimiento automático, realice una de las siguientes acciones:

  • Especifique el nombre del set de réplicas como el valor del parámetro replicaSet.

  • Especifique false como el valor del parámetro directConnection.

  • Especifica más de un host en el conjunto de réplicas.

En el siguiente ejemplo, el controlador utiliza un URI de conexión de muestra para conectarse al conjunto de réplicas de MongoDB sampleRS, que está funcionando en el puerto 27017 de tres hosts diferentes, incluyendo host1:

import com.mongodb.reactivestreams.client.MongoClients;
import com.mongodb.reactivestreams.client.MongoClient;
public class MongoConnection {
public static void main(String[] args) {
String uri = "mongodb://localhost:27017/?replicaSet=sampleRS";
try (MongoClient client = MongoClients.create(uri)) {
// use `client` here
}
}
}

Nota

create() no es bloqueante

El método create() que construye un MongoClient es no bloqueante. Cuando te conectas a un set de réplicas, el método devuelve inmediatamente mientras el cliente utiliza hilos en segundo plano para conectarse al set de réplicas.

Si creas un MongoClient e imprimes inmediatamente la representación en string de su atributo nodes, la lista podría estar vacía mientras el cliente se conecta a los elementos del conjunto de réplicas.

Para inicializar un set de réplicas, debe conectarse directamente a un único nodo. Para ello, establece la opción de conexión directConnection en True. Puedes hacer esto de las siguientes maneras:

  • Pasar un argumento al método create() que crea un MongoClient

  • Configurar el parámetro en tu cadena de conexión.

import com.mongodb.reactivestreams.client.MongoClients;
import com.mongodb.reactivestreams.client.MongoClient;
public class MongoConnection {
public static void main(String[] args) {
try (MongoClient client =
MongoClients.create("mongodb://<hostname>:<port>", directConnection=True)){
// use `client` here
}
}
}
import com.mongodb.reactivestreams.client.MongoClients;
import com.mongodb.reactivestreams.client.MongoClient;
public class MongoConnection {
public static void main(String[] args) {
String uri = "mongodb://<hostname>:<port>/?directConnection=true";
try (MongoClient client = MongoClients.create(uri)){
// use `client` here
}
}
}

Nota

Set de réplicas en Docker

Cuando un set de réplicas se ejecuta en Docker, se podría exponer solo un punto final de MongoDB. En este caso, el set de réplicas no se puede detectar. Si se especifica directConnection=false en la URI de conexión, o se deja esta opción sin configurar, puedes evitar que tu aplicación se conecte a ella.

En un entorno de prueba o desarrollo, se puede conectar al set de réplicas especificando directConnection=true. En un entorno de producción, se recomienda configurar el clúster para que cada instancia de MongoDB sea accesible fuera de la red virtual de Docker.

Para usar el descubrimiento de servicios DNS y consultar el registro DNS SRV del servicio al que se conecta, especifique el formato de conexión SRV en la cadena de conexión. Si especifica este formato, el controlador Java Reactive Streams vuelve a escanear automáticamente en busca de nuevos hosts. Su implementación puede agregar hosts a su topología sin necesidad de modificar la configuración del cliente.

El siguiente código muestra una cadena de conexión que utiliza el formato de conexión SRV:

String uri = "mongodb+srv://<hostname>/";

Para aprender más sobre el formato de conexión SRV, consulta la entrada Formato de conexión SRV en el manual de MongoDB Server.

Para obtener más información sobre cómo crear una instancia de MongoClient en el driver Java Reactive Streams, consulta la siguiente documentación de la API: