cari

Rumah  >  Soal Jawab  >  teks badan

mongodb - 数据滚动分页的问题

我现在想用last_id的方法去实现滚动分页,但是出现了一些问题

数据的原始数据是:
B、C、E、D
现在需要按name排序,每页3条,那么取出的数据就是:
E、D、C
那么滚动到第二页的时候,根据last_id,也就是C的_id,取出的就是E、D,这样顺序就乱了

请问有什么办法解决吗,谢谢

仅有的幸福仅有的幸福2875 hari yang lalu683

membalas semua(1)saya akan balas

  • 漂亮男人

    漂亮男人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

    lain kali
    {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}}

    balas
    0
  • Batalbalas