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