sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB - Limite los resultados de una consulta

Devuelva solo la cantidad de documentos que necesita con el limit() método.

En MongoDB, puede usar limit() método para especificar un número máximo de documentos para que un cursor devuelva.

Cuando consulta una colección usando db.collection.find() método, puede agregar limit() para especificar el límite.

Ejemplo

Primero hagamos una consulta sin un límite (para que podamos ver cuántos documentos se devuelven):

Sin límite

db.artists.find( { albums: { $exists: false }} )

Resultado:

{ "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "artistname" : "The Tea Party" }
{ "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" }
{ "_id" : 1, "artistname" : "AC/DC" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014d"), "artistname" : "The Kooks" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014e"), "artistname" : "Bastille" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014f"), "artistname" : "Gang of Four" }

Con un límite

Bien, entonces limitemos los resultados a decir, 3 documentos:

db.artists.find( { albums: { $exists: false }} ).limit(3)

Resultado:

{ "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "artistname" : "The Tea Party" }
{ "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" }
{ "_id" : 1, "artistname" : "AC/DC" }

En nuestra consulta, estamos usando $exists operador para comprobar la existencia de un campo. En este caso excluimos a aquellos artistas que tengan un álbumes campo en el documento.

Esto podría cambiarse fácilmente a { $exists: true } para incluir solo a aquellos artistas con un álbumes campo.

Agregue el skip() Método

Puedes usar skip() método para saltar a un documento dentro del cursor. En otras palabras, puede controlar dónde comienza MongoDB a devolver los resultados.

db.artists.find( { albums: { $exists: false }} ).limit(3).skip(1)

Resultado:

{ "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" }
{ "_id" : 1, "artistname" : "AC/DC" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014d"), "artistname" : "The Kooks" }

Entonces puede ver que omitió el primer resultado, pero aún devolvió 3 documentos.

Tenga en cuenta que skip() se puede usar en cualquier consulta (no solo en las que tienen limit() ).

Por ejemplo, la consulta en la parte superior de esta página devolvió 6 documentos. Si añadimos skip(3) , terminaremos con los últimos 3 documentos:

db.artists.find( { albums: { $exists: false }} ).skip(3)

Resultado:

{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014d"), "artistname" : "The Kooks" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014e"), "artistname" : "Bastille" }
{ "_id" : ObjectId("5781d7f248ef8c6b3ffb014f"), "artistname" : "Gang of Four" }