Maison > Questions et réponses > le corps du texte
如题,我前两天去参加 MongoDB 用户组交流会时,听讲师说到数据量大的话不要使用 skip 和 limit
因为,这样会一行一行的数到想到的页数再取 PageSize 的数量。当然他们也提了另外一个方法,但是只略讲了一句。
我在这里提问是想知道具体怎么做?求思路。
大家讲道理2017-04-24 09:12:31
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. »
PHP中文网2017-04-24 09:12:31
Enregistrez le dernier _id de la dernière requête, et la requête suivante sera {_id : {$gt: last_id}}