Ne définissez pas le last_id que vous avez mentionné ici comme étant nécessairement _id. Son principe est de retrouver le dernier chiffre du champ trié, et la page suivante part de celui-là. Donc, comme il est trié selon name, votre last_id devrait en fait être celui de C name Vérifiez
la prochaine fois.
{name: {$gt: c.name}}
Mais il y a un problème avec cette méthode de pagination, qui nécessite que les champs triés soient uniques, sinon certains documents risquent d'être ignorés. Par exemple, si c.name = b.name, alors la requête ci-dessus ignorera évidemment l'enregistrement b. Ainsi si le champ de tri n'est pas unique, il faut ajouter un deuxième champ de tri, tel que _id :
Ne définissez pas le
la prochaine fois.last_id
que vous avez mentionné ici comme étant nécessairement_id
. Son principe est de retrouver le dernier chiffre du champ trié, et la page suivante part de celui-là. Donc, comme il est trié selonname
, votrelast_id
devrait en fait être celui de Cname
VérifiezMais il y a un problème avec cette méthode de pagination, qui nécessite que les champs triés soient uniques, sinon certains documents risquent d'être ignorés. Par exemple, si
c.name = b.name
, alors la requête ci-dessus ignorera évidemment l'enregistrement b. Ainsi si le champ de tri n'est pas unique, il faut ajouter un deuxième champ de tri, tel que_id
:Le filtre correspondant doit être remplacé par :