Limite o número de resultados retornados
Nesta página
Visão geral
Use limit
para limitar o número de documentos que podem ser devolvidos de uma operação de leitura. limit
funciona como um limite para o número máximo de documentos que a operação pode retornar, mas a operação pode retornar um número menor de documentos se não houver documentos suficientes presentes para atingir o limite. Se limit
for utilizado com o método desalto , o salto se aplicará primeiro e o limite se aplicará somente aos documentos deixados após o salto.
Documentos de amostra
Para acompanhar os exemplos deste guia, use o seguinte trecho de código para inserir documentos que descrevem livros na coleção myDB.books
:
const myDB = client.db("myDB"); const myColl = myDB.collection("books"); await myColl.insertMany([ { "_id": 1, "name": "The Brothers Karamazov", "author": "Dostoyevsky", "length": 824 }, { "_id": 2, "name": "Les Misérables", "author": "Hugo", "length": 1462 }, { "_id": 3, "name": "Atlas Shrugged", "author": "Rand", "length": 1088 }, { "_id": 4, "name": "Infinite Jest", "author": "Wallace", "length": 1104 }, { "_id": 5, "name": "Cryptonomicon", "author": "Stephenson", "length": 918 }, { "_id": 6, "name": "A Dance With Dragons", "author": "Martin", "length": 1104 }, ]);
Observação
Sua operação de query pode retornar uma referência a um cursor que contém documentos correspondentes. Para saber como examinar os dados armazenados no cursor, consulte a página Fundamentos do cursor.
Limite
O exemplo abaixo faz query na collection para retornar os três livros mais longos. Corresponde a todos os documentos porque o filtro de query está vazio. Em seguida, ele aplica um sort
decrescente no campo length
para devolver retornar livros mais longos antes de livros mais curtos, e um limit
para retornar somente os 3
primeiros resultados:
// define an empty query document const query = {}; // sort in descending (-1) order by length const sort = { length: -1 }; const limit = 3; const cursor = myColl.find(query).sort(sort).limit(limit); for await (const doc of cursor) { console.dir; }
O exemplo de código acima gera os três documentos a seguir, classificados por tamanho:
{ "_id": 2, "title": "Les Misérables", "author": "Hugo", "length": 1462 } { "_id": 6, "title": "A Dance With Dragons", "author": "Martin", "length": 1104 } { "_id": 4, "title": "Infinite Jest", "author": "Wallace", "length": 1104 }
Observação
A ordem em que você chama limit
e sort
não importa porque o driver reordena as chamadas para aplicar primeiro a classificação e o limite depois disso. As duas chamadas a seguir são equivalentes:
myColl.find(query).sort({ length: -1 }).limit(3); myColl.find(query).limit(3).sort({ length: -1 });
Você também pode aplicar sort
e limit
especificando-os em um objeto options
em sua chamada ao método find()
. As duas chamadas a seguir são equivalentes:
myColl.find(query).sort({ length: -1 }).limit(3); myColl.find(query, { sort: { length: -1 }, limit: 3 });
Para obter mais informações sobre as configurações options
do método find()
, consulte a documentação da API sobre find().
Ignorar
Para ver os próximos três livros nos resultados, anexe o método skip()
, passando o número de documentos para ignorar como mostrado abaixo:
// define an empty query document const query = {}; // sort in descending (-1) order by length const sort = { length: -1 }; const limit = 3; const skip = 3; const cursor = myColl.find(query).sort(sort).limit(limit).skip(skip); for await (const doc of cursor) { console.dir; }
Essa operação retorna os documentos que descrevem do quarto ao sexto livro por ordem de maior para o menor tamanho:
{ "_id": 3, "title": "Atlas Shrugged", "author": "Rand", "length": 1088 } { "_id": 5, "title": "Cryptonomicon", "author": "Stephenson", "length": 918 } { "_id": 1, "title": "The Brothers Karamazov", "author": "Dostoyevsky", "length": 824 }
Você pode combinar pular e limitar dessa maneira para implementar a paginação da sua coleção, devolvendo apenas pequenas "fatias" da coleção de uma só vez.