Rumah > Soal Jawab > teks badan
我现在想用last_id的方法去实现滚动分页,但是出现了一些问题
数据的原始数据是:
B、C、E、D
现在需要按name排序,每页3条,那么取出的数据就是:
E、D、C
那么滚动到第二页的时候,根据last_id,也就是C的_id,取出的就是E、D,这样顺序就乱了
请问有什么办法解决吗,谢谢
漂亮男人2017-05-02 09:23:12
Jangan tentukan last_id
yang anda nyatakan di sini sebagai semestinya _id
. Prinsipnya adalah untuk mencari digit terakhir medan yang diisih, dan halaman seterusnya bermula dari yang itu. Oleh itu, kerana ia diisih mengikut name
, last_id
anda sepatutnya menjadi C name
Semak
{name: {$gt: c.name}}
Tetapi terdapat masalah dengan kaedah paging ini, yang memerlukan medan yang diisih mestilah unik, jika tidak, sesetengah dokumen mungkin dilangkau. Contohnya, jika c.name = b.name
, maka pertanyaan di atas jelas akan melangkau rekod b. Jadi jika medan pengisihan tidak unik, medan pengisihan kedua harus ditambah, seperti _id
:
{name: 1, _id: 1}
Penapis yang sepadan hendaklah ditukar kepada:
{name: {$gte: c.name}, _id: {$gt: c._id}}