Maison >base de données >tutoriel mysql >Comment mongoDB implémente-t-il la pagination ?

Comment mongoDB implémente-t-il la pagination ?

零下一度
零下一度original
2017-07-03 16:39:201860parcourir

Cet article présente principalement en détail les deux méthodes de mongoDB pour implémenter la pagination Il a une certaine valeur de référence. Les amis intéressés peuvent s'y référer

La pagination de MongoDB. requête utilise les trois fonctions tableau de limit(), skip() et sort() pour effectuer une requête de pagination.

Ce qui suit sont mes données de test

db.test.find().sort({"age":1});

La première méthode

Interrogez les données de la première page : db.test.find().sort({"age":1}).limit(2); 🎜>

Interrogez les données sur la deuxième page : db.test.find().sort({"age":1}).skip(2).limit(2) ;

Requérez le nombre d'autres pages et ainsi de suite. . .

La deuxième méthode

Interroger les données de la première page : db.test.find().sort({"age":1}).limit( 2);

Identique à la première méthode ci-dessus.

Interroger les données de la deuxième page :

Cela permet d'obtenir la valeur du dernier enregistrement de la première page, puis d'exclure les enregistrements précédents pour obtenir un nouvel enregistrement

En résumé, si la quantité de données n'est pas très importante, vous pouvez utiliser la première méthode. Après tout, c'est relativement simple. Si la quantité de données est relativement importante, c'est mieux. pour utiliser la deuxième méthode, car cela Vous n'avez pas besoin d'utiliser la fonction skip()

Skip saute trop d'enregistrements et l'efficacité est un peu faibleAprès un examen attentif, la deuxième méthode est. en effet ne convient pas au saut de page et n'est pas efficace non plus

Pour les données massives, nous devons effectuer un traitement spécial

Il existe les deux méthodes suivantes

<.>

La première méthode


Limiter le nombre de pages de pagination, similaire au traitement de pagination de Baidu, qui ne fait que affiche les sept cents enregistrements précédents, comme celui-ci. Il n'est pas nécessaire de prendre en compte les problèmes de performances. Après tout, la plupart des gens se contentent de se tourner vers les dix premières pages et de trouver ce dont ils ont besoin

Les résultats statistiques ci-dessous doivent être estimés en fonction. sur la proportion de ces enregistrements trouvés Estimer le nombre total d'enregistrements

La deuxième méthode

Nous pouvons le faire en supposant qu'il soit trié en fonction. pour identifier, nous pouvons suivre l'identifiant. Le numéro de série de la page où se trouve l'identifiant est stocké dans redis/MemberCached,

comme ceci, en supposant que chaque page contient 10 enregistrements

page d'identification

1 1

2 1

. . .

101

112

122

. . . .

20 2

De cette façon, lorsque nous vérifions la première page, nous pouvons récupérer directement dix éléments de données

En supposant qu'il y ait 100 millions d'éléments de données, un enregistrement L'identifiant occupe 4 octets. Les autres informations occupent un octet et un enregistrement occupe 5 octets

1 0000 0000 *5/(1024*1024)=476MB

Cette approche utilise généralement l'espace pour le temps. La majeure partie du temps de requête de la base de données est consacrée à la connexion à la base de données. Le mettre dans le cache peut considérablement accélérer la requête

.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn