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

Buscar documentos

En esta guía, aprenderá cómo buscar documentos utilizando el controlador Java Reactive Streams de MongoDB.

Los ejemplos en esta guía utilizan la colección sample_restaurants.restaurants de los 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, consulta Cómo empezar.

Importante

Proyecto Reactor librería

Esta guía usa la librería Proyecto Reactor para consumir instancias Publisher devueltas por los métodos del driver Reactive Streams de Java. Para obtener más información sobre la biblioteca Project Reactor y cómo utilizarla, consulta Primeros pasos en la documentación de Reactor. Para obtener más información sobre cómo utilizamos los métodos de la librería Project Reactor en esta guía, consulta la guía Guardar datos en MongoDB.

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

Este método toma un filtro de query y retorna uno o más documentos coincidentes. Un filtro de query es un objeto que define los documentos que se desean recuperar en una query.

Para obtener más información sobre los filtros de query, consulta 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 si solo te interesa la primera coincidencia.

El siguiente ejemplo utiliza la construcción find().first() para encontrar el primer documento en el que 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 aprender más sobre la clasificación, consulta la guía Especificar Documentos para 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 usa 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 en una colección, no pases parámetros al método find():

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

Es posible modificar el comportamiento del método find() encadenando otros métodos a este. La siguiente tabla describe los métodos de uso más común:

Argument
Descripción

batchSize(int batchSize)

El número máximo de documentos dentro de cada lote devuelto en el resultado de una consulta. Por defecto, el controlador establece este valor en Long.MAX_VALUE.

Un batchSize de 0 significa que el cursor se establecerá, pero no se devolverá ningún documento en el primer lote.

collation(Collation collation)

Establece las opciones de intercalación como una instancia de la clase Collation.

comment(String comment)

Adjunta una cadena de texto a la consulta. Esto puede ayudarle a rastrear e interpretar la operación en los registros del servidor y en los datos de perfil. Para obtener más información sobre los comentarios de consulta, consulte la página cursor.comment() en el manual del servidor MongoDB.

hint(Bson hint)

Obtiene o define el índice para escanear documentos. Para obtener más información, consulta la instrucción de sugerencia en el manual del MongoDB Server.

El siguiente ejemplo utiliza el método find() para encontrar todos los documentos en los que 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 de la interfaz FindPublisher.

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

Para ver ejemplos de código ejecutables sobre cómo recuperar documentos utilizando el controlador Java Reactive Streams, consulte la guía Consultar documentos.

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