Si vous souhaitez obtenir la "page suivante" ou la "page précédente", vous pouvez le faire en interrogeant sort+limit qui est supérieur à un certain _id.
Si vous voulez obtenir "page xxx", si vous voulez être complètement précis, il n'y a en fait aucun bon moyen. La pagination elle-même est une logique de "compter un par un", et ce processus fastidieux ne peut être évité, que ce soit ou non. il y a un index.
Lorsque le nombre de pages est très important, peu de gens se soucient des chiffres après des dizaines de millions. Vous pouvez utiliser redis pour mettre en cache la liste _id par numéro de page et la mettre à jour de temps en temps.
Le point fondamental de ce problème est : « La structure b+ sur laquelle repose l’indice ne peut pas être utilisée pour les calculs de classement. »
Si vous souhaitez obtenir la "page suivante" ou la "page précédente", vous pouvez le faire en interrogeant sort+limit qui est supérieur à un certain _id.
Si vous voulez obtenir "page xxx", si vous voulez être complètement précis, il n'y a en fait aucun bon moyen. La pagination elle-même est une logique de "compter un par un", et ce processus fastidieux ne peut être évité, que ce soit ou non. il y a un index.
Lorsque le nombre de pages est très important, peu de gens se soucient des chiffres après des dizaines de millions. Vous pouvez utiliser redis pour mettre en cache la liste _id par numéro de page et la mettre à jour de temps en temps.
Le point fondamental de ce problème est : « La structure b+ sur laquelle repose l’indice ne peut pas être utilisée pour les calculs de classement. »
Enregistrez le dernier _id de la dernière requête, et la requête suivante sera {_id : {$gt: last_id}}