MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

MongoDB - Limitar os resultados de uma consulta


Retorne apenas o número de documentos que você precisa com o limit() método.

No MongoDB, você pode usar o limit() método para especificar um número máximo de documentos para um cursor retornar.

Quando você consulta uma coleção usando o db.collection.find() método, você pode anexar limit() para especificar o limite.

Exemplo


Primeiro vamos fazer uma consulta sem um limite (para que possamos ver quantos documentos são retornados):

Sem limite

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

Com um limite


OK, então vamos limitar os resultados a dizer, 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" }

Em nossa consulta, estamos usando o $exists operador para verificar a existência de um campo. Neste caso, excluímos os artistas que possuem álbuns campo no documento.

Isso pode ser facilmente alterado para { $exists: true } para incluir apenas os artistas com álbuns campo.

Adicione o skip() Método


Você pode usar o skip() método para pular para um documento dentro do cursor. Em outras palavras, você pode controlar onde o MongoDB começa a retornar os 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" }

Então você pode ver que ele pulou o primeiro resultado, mas ainda retornou 3 documentos.

Observe que skip() pode ser usado em qualquer consulta (não apenas aquelas com limit() ).

Por exemplo, a consulta no topo desta página retornou 6 documentos. Se adicionarmos skip(3) , terminaremos com os 3 últimos 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" }