Overview
En esta guía, puedes aprender a especificar qué documentos devolver de una operación de lectura utilizando los siguientes métodos:
limit(): Especifica el número máximo de documentos que se devolverán de una consultasort(): Especifica el orden de clasificación de los documentos devueltosskip(): Especifica la cantidad de documentos que se deben omitir antes de devolver los resultados de la consulta
Datos de muestra
Los ejemplos de esta guía utilizan la colección sample_restaurants.restaurants de 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".
Limit
Para especificar la cantidad máxima de documentos devueltos de una operación de lectura, encadene el método limit() a un método find() y pase la cantidad de documentos que desea devolver.
El siguiente ejemplo busca todos los restaurantes que tienen un valor de campo cuisine de "Italian" y limita los resultados a 5 documentos:
FindPublisher<Document> findPublisher = restaurants.find( eq("cuisine", "Italian")).limit(5); Flux.from(findPublisher) .doOnNext(x -> System.out.println(x.getString("name"))) .blockLast();
Isle Of Capri Resturant Italian Arturo'S Italian Patsy'S Italian Restaurant Italian Piccola Venezia Italian Roadhouse Restaurant Italian
Tip
El ejemplo anterior devuelve los primeros cinco documentos devueltos por la consulta, en orden natural. La siguiente sección describe cómo devolver los documentos en un orden específico.
Sort
Para devolver los documentos en un orden específico, encadene el método sort() al método find(). El método sort() toma como parámetro el método de dirección de ordenación. Para especificar la dirección de ordenación, pase el método ascending() o descending() al método sort(). A continuación, pase el valor del campo por el que desea ordenar. El método ascending() ordena los valores de menor a mayor, y el método descending() los ordena de mayor a menor. Si no especifica ninguna dirección, el método sort devuelve los resultados en orden ascendente.
El siguiente ejemplo devuelve todos los documentos con el valor cuisine de "Italian", ordenados por el campo name en orden ascendente:
FindPublisher<Document> findPublisher = restaurants.find( eq("cuisine", "Italian")).sort(ascending("name")); Flux.from(findPublisher) .doOnNext(x -> System.out.println(x.getString("name"))) .blockLast();
(Lewis Drug Store) Locanda Vini E Olii 101 Restaurant And Bar 44 Sw Ristorante & Bar 900 Park A Voce ... Zucchero E Pomodori
Omitir
Para omitir un número específico de documentos antes de devolver los resultados de la consulta, encadene el método skip() con el método find() y pase el número de documentos que desea omitir. El método skip() ignora el número especificado de documentos en los resultados de la consulta y devuelve el resto.
El siguiente ejemplo devuelve todos los documentos que tienen un valor de campo borough de "Manhattan" y omite los primeros 10 documentos:
FindPublisher<Document> findPublisher = restaurants.find( eq("borough", "Manhattan")).skip(10); Flux.from(findPublisher) .doOnNext(x -> System.out.println(x.getString("name"))) .blockLast();
Cafe Metro Lexler Deli Domino'S Pizza ...
Combinar límite, ordenar y omitir
Puede combinar los métodos limit(), sort() y skip() en una sola operación encadenándolos. Esto le permite establecer un número máximo de documentos ordenados para devolver, omitiendo un número específico de documentos antes de devolverlos.
El siguiente ejemplo devuelve 5 documentos con un valor cuisine de "Italian". Los resultados se ordenan ascendentemente por el valor del campo name, omitiendo los primeros 10 documentos.
FindPublisher<Document> findPublisher = restaurants.find( eq("cuisine", "Italian")) .sort(ascending("name")) .limit(5) .skip(10); Flux.from(findPublisher) .doOnNext(x -> System.out.println(x.getString("name"))) .blockLast();
Acqua Acqua Restaurant Acqua Santa Acquista Trattoria Acquolina Catering
Nota
El orden en que se llaman estos métodos no modifica los documentos devueltos. El controlador reordena automáticamente las llamadas para realizar primero las operaciones de ordenación y omisión, y después la operación de límite.
Información Adicional
Para obtener más información sobre cómo especificar una consulta, consulte la guía Especificar una consulta.
Para obtener más información sobre cómo recuperar documentos, consulte la guía Recuperar datos.
Documentación de la API
Para aprender más sobre cualquiera de los métodos o tipos analizados en esta guía, consulta la siguiente documentación de API: