MongoDB中数据量大的话,不推荐使用 skip 和 limit,那其它方式怎么实现?
迷茫
迷茫 2017-04-24 09:10:31
0
2
643
  1. 如题,我前两天去参加 MongoDB 用户组交流会时,听讲师说到数据量大的话不要使用 skip 和 limit
    因为,这样会一行一行的数到想到的页数再取 PageSize 的数量。当然他们也提了另外一个方法,但是只略讲了一句。

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

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

répondre à tous(2)
大家讲道理

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. »

Ty80

Enregistrez le dernier _id de la dernière requête, et la requête suivante sera {_id : {$gt: last_id}}

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal