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

Limite la cantidad de resultados devueltos

En esta guía, puede aprender cómo limitar la cantidad de resultados devueltos por las operaciones de lectura con el controlador Java de MongoDB.

Usar limit() para limitar la cantidad de documentos que una operación de lectura retorna. Este método de instancia designa el número máximo de documentos que una operación de lectura puede devolver. Si no hay suficientes documentos para alcanzar el límite especificado, puede devolver un número menor. Si utiliza limit() con el método de instancia skip(), el salto se aplica primero y el límite solo se aplica a los documentos restantes después del salto. Para obtener más información sobre el método skip(), consulta nuestro guía para omitir documentos devueltos.

Los siguientes ejemplos demuestran, respectivamente, cómo insertar datos en una colección, cómo usar limit() para restringir la cantidad de documentos devueltos y cómo combinar limit() con skip() para limitar aún más los resultados devueltos de una consulta.

La siguiente operación inserta documentos que representan libros en una colección:

collection.insertMany(Arrays.asList(
new Document().append("_id", 1)
.append("title", "The Brothers Karamazov").append("length", 824)
.append("author", "Dostoyevsky"),
new Document().append("_id", 2)
.append("title", "Les Misérables").append("length", 1462).append("author", "Hugo"),
new Document().append("_id", 3)
.append("title", "Atlas Shrugged").append("length", 1088).append("author", "Rand"),
new Document().append("_id", 4)
.append("title", "Infinite Jest").append("length", 1104).append("author", "Wallace"),
new Document().append("_id", 5)
.append("title", "Cryptonomicon").append("length", 918).append("author", "Stephenson"),
new Document().append("_id", 6)
.append("title", "A Dance with Dragons").append("length", 1104)
.append("author", "Martin")
));

El siguiente ejemplo query la colección para devolver los tres libros más largos. Primero coincide todos los documentos con la query, luego ordena en el campo length para devolver libros con mayores longitudes antes que libros con longitudes más cortas. Por último, limita el valor de retorno a 3 documentos:

import com.mongodb.client.*;
import org.bson.Document;
import static com.mongodb.client.model.Sorts.descending;
// ...
// define a cursor that will return the first 3 sorted items
MongoCursor<Document> cursor = collection.find()
.sort(descending("length"))
.limit(3)
.iterator();
// print out items
try {
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
}
// close the cursor
finally {
cursor.close();
}

El ejemplo de código anterior imprime los siguientes tres documentos, ordenados por longitud:

Document{{_id=2, title=Les Misérables, author=Hugo, length=1462}}
Document{{_id=6, title=A Dance with Dragons, author=Martin, length=1104}}
Document{{_id=4, title=Infinite Jest, author=Wallace, length=1104}}

Tip

El orden en el que llames a limit() y sort() no importa porque el controlador reordena las llamadas para aplicar primero la clasificación y después el límite. Las siguientes dos llamadas son equivalentes:

collection.find().sort(descending("length")).limit(3);
collection.find().limit(3).sort(descending("length"));

Para ver los próximos tres libros más largos, agregue el método skip() a su llamada find() como se muestra en el siguiente ejemplo de código:

MongoCursor<Document> cursor = collection.find()
.sort(descending("length"))
.limit(3)
.skip(3)
.iterator();

Esta operación devuelve los documentos que describen del cuarto al sexto libro más largo:

Document{{_id=3, title=Atlas Shrugged, author=Rand, length=1088}}
Document{{_id=5, title=Cryptonomicon, author=Stephenson, length=918}}
Document{{_id=1, title=The Brothers Karamazov, author=Dostoyevsky, length=824}}

Puedes combinar skip() y limit() de esta manera para implementar la paginación de tu colección, devolviendo solo pequeños subconjuntos de la colección a la vez.

Nota

Para garantizar una ordenación estable en múltiples consultas, debe usar una clave única (como _id). De lo contrario, una llamada a skip() y limit() podría generar resultados impredecibles al combinarse con sort().

Por ejemplo, considere los siguientes datos:

{ type: "computer", data: "1", serial_no: 235235 }
{ type: "computer", data: "2", serial_no: 235237 }
{ type: "computer", data: "3", serial_no: 235239 }
{ type: "computer", data: "4", serial_no: 235241 }

Si ordenaste solo por type, sort() no garantiza el mismo orden al regresar. Si se añaden skip() y limit() a la sort(), pueden devolverse diferentes documentos para diferentes queries. En este caso, ordenar por data o serial_no garantizaría un ordenamiento estable, ya que ambos son claves únicas.

Para obtener más información sobre los métodos y clases mencionados en esta guía, consulta la siguiente Documentación de la API:

  • FindIterable

  • MongoIterable

  • MongoCursor

  • find()

Volver

Especifica qué campos se deben devolver

En esta página