MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

mongodb :limit() augmentera-t-il la vitesse des requêtes ?

Utilisation de limit() vous informez le serveur que vous ne récupérerez pas plus de k documents. Permettant certaines optimisations pour réduire la consommation de bande passante et accélérer les tris. Enfin, en utilisant une clause de limite, le serveur pourra mieux utiliser les 32 Mo max disponibles lors du tri en RAM (c'est-à-dire lorsque l'ordre de tri ne peut pas être obtenu à partir d'un index).

Maintenant, la longue histoire :find() renvoie un curseur. Par défaut, le curseur transférera les résultats au client par lots. Depuis la documentation , :

Utilisation de limit() le curseur n'aura pas besoin de récupérer plus de documents que nécessaire. Réduisant ainsi la consommation de bande passante et la latence.

Veuillez noter que, compte tenu de votre cas d'utilisation, vous utiliserez probablement un sort() fonctionnement également. À partir de la même documentation que ci-dessus :

Et la page de documentation sort() explique plus en détail :

Cette limite de 32 Mo n'est pas spécifique au tri à l'aide d'un limit() clause. Toute sorte dont l'ordre ne peut être obtenu à partir d'un index souffrira de la même limitation. Cependant, avec un uni trier le serveur doit contenir tous documents dans sa mémoire pour les trier. Avec un limité sort, il n'a qu'à stocker k documents en mémoire en même temps.