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 pueden devolver de una querysort()Especifica el orden de clasificación para los documentos devueltosskip(): Especifica la cantidad de documentos a omitir antes de devolver los resultados de la query
Datos de muestra
Los ejemplos en esta guía utilizan la colección sample_restaurants.restaurants de la Conjuntos de datos de muestra de Atlas. Para aprender cómo crear un clúster gratuito de MongoDB Atlas y cargar los conjuntos de datos de muestra, consulta
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 encuentra 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 documentos en un orden específico, encadena el método sort() al método find(). El método sort() toma el método de dirección de ordenación como parámetro. Para especificar la dirección de ordenamiento, pasa el método ascending() o descending() al método sort(). Luego, pasa el valor de campo por el cual deseas 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 especificas 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 determinado de documentos antes de devolver los resultados de la query, encadena el método skip() al método find() y pasa la cantidad de documentos que se desea omitir. El método skip() ignora el número especificado de documentos en los resultados de la query 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 ...
Combine Limit, Sort y Skip
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 el que se llaman estos métodos no cambia los documentos que se devuelven. El controlador reordena automáticamente las llamadas para realizar primero las operaciones de ordenar y omitir, y la operación de límite después.
Información Adicional
Para más información sobre cómo especificar una query, consulta la guía de Especificar una query.
Para obtener más información sobre cómo recuperar documentos, consulta 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: