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

mongodb:limit() aumentará a velocidade da consulta?


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.