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

Especifica los documentos a devolver

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 query

  • sort()Especifica el orden de clasificación para los documentos devueltos

  • skip(): Especifica la cantidad de documentos a omitir antes de devolver los resultados de la query

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".

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.

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

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

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.

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.

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

Especifique los campos a devolver

En esta página