Maison  >  Questions et réponses  >  le corps du texte

MongoDB中数据量大的话,不推荐使用 skip 和 limit,那其它方式怎么实现?

  1. 如题,我前两天去参加 MongoDB 用户组交流会时,听讲师说到数据量大的话不要使用 skip 和 limit
    因为,这样会一行一行的数到想到的页数再取 PageSize 的数量。当然他们也提了另外一个方法,但是只略讲了一句。

    我在这里提问是想知道具体怎么做?求思路。

迷茫迷茫2734 Il y a quelques jours584

répondre à tous(2)je répondrai

  • 大家讲道理

    大家讲道理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. »

    répondre
    0
  • PHP中文网

    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}}

    répondre
    0
  • Annulerrépondre