Pagination efficace dans MongoDB à l'aide de mgo.v2
Le pilote mgo.v2 de MongoDB fournit une prise en charge intégrée pour la pagination des résultats de requête à l'aide de Query. Sauter() et Query.Limit(). Cependant, ces méthodes deviennent inefficaces pour les grands ensembles de résultats car MongoDB parcourt tous les documents pour ignorer le nombre spécifié.
Pour obtenir une pagination efficace, la fonctionnalité Cursor.min() de MongoDB peut être utilisée. En fournissant une valeur de curseur, MongoDB peut accéder directement à l'entrée d'index spécifiée pour la liste des résultats. Malheureusement, mgo.v2 ne prend pas en charge directement curseur.min().
Solution utilisant Database.Run()
À la place, nous pouvons utiliser Database.Run( ) pour exécuter les commandes MongoDB, y compris la commande find qui prend en charge curseur.min(). La commande peut être construite manuellement à l'aide de bson.D et en capturant le résultat dans une structure personnalisée.
À l'aide de MinQuery
Le processus peut être simplifié à l'aide de github.com/ paquet icza/minquery. MinQuery fournit un wrapper qui simplifie la configuration et l'exécution des commandes de recherche MongoDB avec la prise en charge de curseur.min().
Implémentation
L'implémentation implique :
Avantages de l'utilisation de minquery
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!