Docs Menu
Docs Home
/ /
/ / /

Retrieve Data

En esta guía, puede aprender a utilizar el controlador de flujos reactivos Java de MongoDB para recuperar datos de una colección de MongoDB mediante operaciones de lectura.

Los ejemplos de esta guía utilizan el sample_restaurants.restaurants colección de la Conjuntos de datos de muestra de Atlas. Para aprender a crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de muestra, consulte Empezar.

Importante

Proyecto Reactor librería

Esta guía utiliza la biblioteca Project Reactor para consumir Publisher las 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 la sección "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 la guía "Escribir datos en MongoDB".

El controlador Java Reactive Streams incluye un método para recuperar documentos de una colección: find().

Este método utiliza un filtro de consulta y devuelve uno o más documentos coincidentes. Un filtro de consulta es un objeto que especifica los documentos que desea recuperar en su consulta.

Para obtener más información sobre los filtros de consulta, consulte la guía Especificar una consulta.

Para encontrar un solo documento en una colección, encadene el método first() a la llamada del método find() y pase un filtro de query a la llamada del método find() que especifique los criterios del documento que desea encontrar. Si más de un documento coincide con el filtro de query, la construcción find().first() devuelve el primer documento coincidente de los resultados recuperados. Si ningún documento coincide con el filtro de query, la construcción devuelve None.

Tip

La construcción find().first() es útil cuando sabes que solo hay un documento coincidente o te interesa solo la primera coincidencia.

El siguiente ejemplo utiliza la construcción find().first() para encontrar el primer documento donde el campo "cuisine" tiene el valor "Bakery":

Publisher<Document> findDocPublisher = restaurants.find(
eq("cuisine", "Bakery")).first();
Mono.from(findDocPublisher)
.doOnNext(System.out::println)
.blockLast();

Tip

Orden de clasificación

Si no especificas un orden de clasificación, el constructo find().first() devuelve el primer documento en orden natural en disco.

Para obtener más información sobre la clasificación, consulte la guía Especificar documentos a devolver.

Para encontrar varios documentos en una colección, pasar un filtro de query al método find() que especifique los criterios de los documentos que desea recuperar.

El siguiente ejemplo utiliza el método find() para encontrar todos los documentos donde el campo "cuisine" tiene el valor "Spanish":

FindPublisher<Document> findDocPublisher = restaurants.find(
eq("cuisine", "Spanish"));
Flux.from(findDocPublisher)
.doOnNext(System.out::println)
.blockLast();

Nota

Encuentre todos los documentos

Para encontrar todos los documentos de una colección, no pase parámetros al método find():

Publisher<Document> findAllPublisher = restaurants.find();
Flux.from(findAllPublisher)
.doOnNext(System.out::println)
.blockLast();

Puede modificar el comportamiento del método find() encadenándolo con otros métodos. La siguiente tabla describe los métodos más comunes:

Argument
Descripción

batchSize(int batchSize)

The maximum number of documents within each batch returned in a query result. By default, the find command has an initial batch size of 101 documents and a maximum size of 16 mebibytes (MiB) for each subsequent batch. This option can enforce a smaller limit than 16 MiB, but not a larger one. If you set batchSize to a limit that results in batches larger than 16 MiB, this option has no effect.
A batchSize of 0 means that the cursor will be established, but no documents will be returned in the first batch.

collation(Collation collation)

Sets the collation options as an instance of the Collation class.

comment(String comment)

Attaches a string to the query. This can help you trace and interpret the operation in the server logs and in profile data. To learn more about query comments, see the cursor.comment() page in the MongoDB Server manual.

hint(Bson hint)

Gets or sets the index to scan for documents. For more information, see the hint statement in the MongoDB Server manual.

El siguiente ejemplo utiliza el método find() para encontrar todos los documentos donde el campo "cuisine" tiene el valor "Italian" y establece un comentario:

FindPublisher<Document> findDocPublisher = restaurants.find(
eq("cuisine", "Italian")).comment("Find operation");
Flux.from(findDocPublisher)
.doOnNext(System.out::println)
.blockLast();

Para obtener una lista completa de los argumentos disponibles, consulte la documentación de la API para la FindPublisher interfaz.

Para obtener más información sobre los filtros de consulta, consulte la guía Especificar una consulta.

Para obtener ejemplos de código ejecutable sobre cómo recuperar documentos mediante el controlador Java Reactive Streams, consulte la guía Lectura de datos.

Para aprender más sobre cualquiera de los métodos o tipos analizados en esta guía, consulta la siguiente documentación de API:

Volver

Query

En esta página