Métodos Limit y Skip de MongoDB


Método MongoDB Limit()

Si necesita leer una cantidad específica de registros de datos en MongoDB, puede usar el método limit() de MongoDB. Si desea omitir una cantidad específica de documentos y leer los datos, puede usar el método skip().

El método limit() se utiliza para limitar el número de documentos devueltos por los resultados de la consulta, mientras que el método skip() se utiliza para omitir una cantidad específica de documentos. Estos dos métodos suelen usarse juntos para implementar consultas paginadas o procesamiento por lotes en grandes conjuntos de datos.

Método limit()

El método limit() se utiliza para limitar el número de documentos devueltos por los resultados de la consulta.

Sintaxis

La sintaxis básica del método limit() es la siguiente:

db.collection.find().limit(<limit>)
  • <limit>Número de documentos a devolver.

Ejemplo

// Devuelve los primeros 10 documentos
db.myCollection.find().limit(10);

Ejemplo

Los datos en la colección col son los siguientes:

{ "_id" : ObjectId("56066542ade2f21f36b0313a"), "title" : "PHP 教程", "description" : "PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。", "by" : "Ejemplo", "url" : "http://www.example.com", "tags" : [ "php" ], "likes" : 200 }
{ "_id" : ObjectId("56066549ade2f21f36b0313b"), "title" : "Java 教程", "description" : "Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。", "by" : "Ejemplo", "url" : "http://www.example.com", "tags" : [ "java" ], "likes" : 150 }
{ "_id" : ObjectId("5606654fade2f21f36b0313c"), "title" : "MongoDB 教程", "description" : "MongoDB 是一个 Nosql 数据库", "by" : "Ejemplo", "url" : "http://www.example.com", "tags" : [ "mongodb" ], "likes" : 100 }

El siguiente ejemplo muestra dos registros de los documentos de la consulta:

> db.col.find({},{"title":1,_id:0}).limit(2)
{ "title" : "PHP 教程" }
{ "title" : "Java 教程" }
>

Nota:Si no se especifica el parámetro del método limit(), se muestran todos los datos de la colección.


Método skip()

Además de usar el método limit() para leer una cantidad específica de datos, también podemos usar el método skip() para omitir una cantidad específica de datos. El método skip() también acepta un parámetro numérico como el número de registros a omitir.

El método skip() se utiliza para omitir una cantidad específica de documentos, logrando así consultas paginadas o por lotes.

Sintaxis

La sintaxis del método skip() es la siguiente:

db.collection.find().skip(<skip>)
  • <skip>Número de documentos a omitir.

Ejemplo

// Omite los primeros 10 documentos y devuelve los siguientes 10 documentos
db.myCollection.find().skip(10).limit(10);

Ejemplo

El siguiente ejemplo solo mostrará los datos del segundo documento.

>db.col.find({},{"title":1,_id:0}).limit(1).skip(1)
{ "title" : "Java 教程" }
>

Consulta paginada:

Ejemplo

// Primera página, 10 documentos por página
db.myCollection.find().skip(0).limit(10);

// Segunda página, 10 documentos por página
db.myCollection.find().skip(10).limit(10);

// Tercera página, 10 documentos por página
db.myCollection.find().skip(20).limit(10);

Nota:El parámetro predeterminado del método skip() es 0.

Precauciones

  • skip()ylimit()Los métodos suelen utilizarse en combinación para implementar consultas paginadas. Sin embargo, usarlos en grandes conjuntos de datosskip()puede causar problemas de rendimiento, porque MongoDB necesita escanear y omitir una cantidad específica de documentos al ejecutar la consulta, por lo que se recomienda usarlo solo cuando sea necesarioskip()el método, y evitar usarlo continuamente en conjuntos de datos grandes.
  • Cuando se combinenskip()ylimit(),skip()debelimit()usarse antes, para evitar comportamientos inesperados.

Mediante el uso dellimit()yskip()método, se puede implementar la paginación de los resultados de consultas en MongoDB, mejorando la flexibilidad y el rendimiento de las consultas.

Otras extensiones