Overview
En esta guía, puedes aprender cómo omitir una cantidad específica de resultados devueltos de las operaciones de lectura con el controlador Java de MongoDB.
Puede omitir resultados en los resultados devueltos de una consulta utilizando
skip() método. También puedes omitir documentos en una etapa específica en un pipeline de agregación, especificando una etapa de agregación $skip.
El método skip() toma un número entero que especifica cuántos documentos se deben omitir desde el inicio de la lista de documentos devuelta por el
FindIterable.
Puede utilizar el método skip() para omitir los dos primeros documentos de la siguiente manera:
collection.find().skip(2);
Aggregates.skip() es una etapa opcional en la pipeline de agregación que especifica cuántos documentos omitir al principio de los resultados de la etapa anterior.
Puede utilizar el método Aggregates.skip() para omitir los dos primeros documentos de la siguiente manera:
import com.mongodb.client.model.Aggregates; collection.aggregate(Arrays.asList(Aggregates.match(), Aggregates.skip(2)));
Ejemplos
El siguiente ejemplo trata de una tienda de pinturas que vende ocho colores diferentes de pintura. Los mejores colores se venden más rápido que los demás. Un día, un cliente pregunta cuáles son los tres colores más vendidos (con el inventario más bajo). La tienda de pintura mantiene un registro de inventario en el campo qty de su colección paint_inventory:
{ "_id": 1, "color": "red", "qty": 5 } { "_id": 2, "color": "purple", "qty": 10 } { "_id": 3, "color": "blue", "qty": 9 } { "_id": 4, "color": "white", "qty": 6 } { "_id": 5, "color": "yellow", "qty": 11 } { "_id": 6, "color": "pink", "qty": 3 } { "_id": 7, "color": "green", "qty": 8 } { "_id": 8, "color": "orange", "qty": 7 }
Para abordar este escenario, el almacén de pintura necesita consultar la colección paint_inventory con un filtro vacío, ordenar los documentos por el campo qty y omitir los primeros cinco resultados.
Uso de un FindIterable
import com.mongodb.client.model.Filters; import com.mongodb.client.model.Sorts; // Add your MongoCollection setup code here Bson filter = Filters.empty(); collection.find(filter) .sort(Sorts.descending("qty")) .skip(5) .forEach(doc -> System.out.println(doc.toJson()));
El método
find()devuelve todos los documentos.El método
sort()especifica documentos para mostrar de mayor a menor según el campoqty.El método
skip()especifica omitir los primeros cinco documentos.
Uso de agregación
import com.mongodb.client.model.Filters; import com.mongodb.client.model.Sorts; import com.mongodb.client.model.Aggregates; // Add your MongoCollection setup code here Bson filter = Filters.empty(); collection.aggregate(Arrays.asList( Aggregates.match(filter), Aggregates.sort(Sorts.descending("qty")), Aggregates.skip(5))) .forEach(doc -> System.out.println(doc.toJson()));
La etapa
match()devuelve todos los documentos.La etapa
sort()especifica documentos que deben mostrarse de mayor a menor según el campoqty.La etapa
skip()especifica omitir los primeros cinco documentos.
A continuación se muestra el resultado de ambas consultas anteriores:
{ "_id": 4, "color": "white", "qty": 6 } { "_id": 1, "color": "red", "qty": 5 } { "_id": 6, "color": "pink", "qty": 3 }
Después de que la tienda de pinturas ejecuta la query, encuentran que los tres colores más vendidos son rosa, rojo y blanco.
Nota
Si el valor de skip es mayor o igual al número de documentos coincidentes para una query, esa query no devuelve ningún documento.
Si el método skip() del ejemplo anterior omite los primeros nueve documentos, no se obtendrán resultados ya que la cantidad especificada excede el número de documentos coincidentes.
Bson filter = Filters.empty(); collection.find(filter) .sort(Sorts.descending("qty")) .skip(9) .forEach(doc -> System.out.println(doc.toJson()));