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
/ /

Leer datos

Esta página contiene ejemplos de código copiables de métodos del controlador Java Reactive Streams que puedes usar para leer datos de MongoDB.

Tip

Para obtener más información sobre cualquiera de los métodos que se muestran en esta página, consulta el enlace que se proporciona en cada sección.

Para utilizar un ejemplo de esta página, copie 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 <connection string>, con los valores relevantes para su implementación de MongoDB.

Esta guía utiliza la librería Proyecto Reactor para consumir instancias de Publisher devueltas por los métodos del driver Java Reactive Streams. Para obtener más información sobre la librería Project Reactor y cómo utilizarla, consulta comenzar en la documentación de Reactor.

También hay otras formas de consumir Publisher instancias. Puedes usar una de las muchas bibliotecas alternativas, como RxJava, o llamar Publisher.subscribe() directamente a y pasar tu propia implementación de Subscriber un.

Los ejemplos en esta guía utilizan el método Flux.blockLast() de Reactor para suscribirse a un Publisher y bloquear el hilo actual hasta que el Publisher alcance su estado terminal. Para obtener más información sobre la iniciativa Reactive Streams, consulte Reactive Streams..

Importante

Los editores devueltos están fríos

Todas las instancias de Publisher devueltas por los métodos del controlador de Java Reactive Streams son frías, lo que significa que la operación correspondiente no ocurre a menos que se suscriba al Publisher devuelto. Recomendamos suscribirse solo una vez al Publisher devuelto, porque suscribirse más de una vez puede provocar errores.

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 ReadOperations.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.MongoException;
2import com.mongodb.ConnectionString;
3import com.mongodb.MongoClientSettings;
4import com.mongodb.ServerApi;
5import com.mongodb.ServerApiVersion;
6
7import com.mongodb.reactivestreams.client.MongoCollection;
8
9import org.bson.Document;
10
11import com.mongodb.reactivestreams.client.MongoClient;
12import com.mongodb.reactivestreams.client.MongoClients;
13import com.mongodb.reactivestreams.client.MongoDatabase;
14import com.mongodb.reactivestreams.client.FindPublisher;
15import com.mongodb.reactivestreams.client.DistinctPublisher;
16import com.mongodb.reactivestreams.client.ChangeStreamPublisher;
17import reactor.core.publisher.Flux;
18
19import java.util.ArrayList;
20import java.util.Arrays;
21import java.util.List;
22
23import static com.mongodb.client.model.Filters.eq;
24
25class ReadOperations {
26 public static void main(String[] args) throws InterruptedException {
27 // Replace the placeholder with your Atlas connection string
28 String uri = "<connection string>";
29
30 // Construct a ServerApi instance using the ServerApi.builder() method
31 ServerApi serverApi = ServerApi.builder()
32 .version(ServerApiVersion.V1)
33 .build();
34
35 MongoClientSettings settings = MongoClientSettings.builder()
36 .applyConnectionString(new ConnectionString(uri))
37 .serverApi(serverApi)
38 .build();
39
40 // Create a new client and connect to the server
41 try (MongoClient mongoClient = MongoClients.create(settings)) {
42 MongoDatabase database = mongoClient.getDatabase("<database name>");
43 MongoCollection<Document> collection = database.getCollection("<collection name>");
44
45 // Start example code here
46
47 // End example code here
48 }
49 }
50}

El siguiente ejemplo recupera un documento que coincide con los criterios especificados en el filtro proporcionado:

FindPublisher<Document> findDocPublisher = collection
.find(eq("<field name>", "<value>")).first();
Flux.from(findDocPublisher)
.doOnNext(System.out::println)
.blockLast();

Para aprender más sobre la construcción find().first(), consulta la Retrieve Data guide.

El siguiente ejemplo recupera todos los documentos que coinciden con los criterios especificados por el filtro dado:

FindPublisher<Document> findDocPublisher = collection
.find(eq("<field name>", "<value>"));
Flux.from(findDocPublisher)
.doOnNext(System.out::println)
.blockLast();

Para aprender más sobre el método find(), consulta la guía Recuperar datos.

El siguiente ejemplo devuelve el número de documentos en la colección especificada:

Publisher<Long> countPublisher = collection.countDocuments();
Flux.from(countPublisher)
.doOnNext(System.out::println)
.blockLast();

Para obtener más información sobre el método countDocuments(), consulta la guía Contar documentos.

El siguiente ejemplo devuelve el número de documentos en la colección especificada que cumplen con los criterios especificados por el filtro dado:

Publisher<Long> countPublisher = collection.countDocuments(
eq("<field name>", "<value>"));
Flux.from(countPublisher)
.doOnNext(System.out::println)
.blockLast();

Para obtener más información sobre el método countDocuments(), consulta la guía Contar documentos.

El siguiente ejemplo devuelve un número aproximado de documentos en la colección especificada en función de los metadatos de la colección:

Publisher<Long> countPublisher = collection.estimatedDocumentCount();
Flux.from(countPublisher)
.doOnNext(System.out::println)
.blockLast();

Para obtener más información sobre el método estimatedDocumentCount(), consulta la guía Contar documentos.

El siguiente ejemplo devuelve todos los valores distintos del nombre de campo especificado en una colección determinada:

DistinctPublisher<String> distinctPublisher = collection.distinct(
"<field name>", <type>.class);
Flux.from(distinctPublisher)
.doOnNext(System.out::println)
.blockLast();

Para obtener más información sobre el método distinct(), consulta la guía Recuperar Valores Únicos de Campo.

El siguiente ejemplo crea un flujo de cambios para una colección dada e imprime los eventos de cambio posteriores en esa colección:

ChangeStreamPublisher<Document> changePublisher = collection.watch();
Flux.from(changePublisher)
.doOnNext(System.out::println)
.blockLast();

Para obtener más información sobre el método watch(), consulta la guía Supervisar cambios de datos.

Volver

Ejecute un comando de base de datos

En esta página