Usando
limit()
você informa o servidor que você não recuperará mais do que k documentos. Permitindo algumas otimizações para reduzir o consumo de largura de banda e acelerar as ordenações. Finalmente, usando uma cláusula de limite, o servidor poderá usar melhor o máximo de 32 MB disponível ao classificar na RAM (ou seja:quando a ordem de classificação não puder ser obtida de um índice). Agora, a longa história:
find()
retorna um cursor. Por padrão, o cursor transferirá os resultados para o cliente em lotes. Da da documentação
,:Usando
limit()
o cursor não precisará recuperar mais documentos do que o necessário. Reduzindo assim o consumo de largura de banda e a latência. Observe que, dado o seu caso de uso, você provavelmente usará um
sort()
operação também. Da mesma documentação acima:E a página de documentação sort() explica mais:
Essa limitação de 32 MB não é específica para classificar usando um
limit()
cláusula. Qualquer ordenação cuja ordem não possa ser obtida de um índice sofrerá a mesma limitação. No entanto, com um plano classificar o servidor precisa conter todos documentos em sua memória para classificá-los. Com um limitado ordenar, basta armazenar k documentos na memória ao mesmo tempo.