我现在想用last_id的方法去实现滚动分页,但是出现了一些问题
数据的原始数据是: B、C、E、D 现在需要按name排序,每页3条,那么取出的数据就是: E、D、C 那么滚动到第二页的时候,根据last_id,也就是C的_id,取出的就是E、D,这样顺序就乱了
请问有什么办法解决吗,谢谢
여기서 언급한 last_id를 반드시 _id로 정의하지 마세요. 그 원리는 정렬된 필드의 마지막 숫자를 찾고, 다음 페이지는 그 숫자에서 시작하는 것입니다. 따라서 name을 기준으로 정렬되었으므로 last_id은 실제로 C의 name이어야 합니다. 다음에는
last_id
_id
name
그러나 이 페이징 방법에는 정렬된 필드가 고유해야 한다는 문제가 있습니다. 그렇지 않으면 일부 문서를 건너뛸 수 있습니다. 예를 들어 c.name = b.name인 경우 위 쿼리는 분명히 레코드 b를 건너뜁니다. 따라서 정렬 필드가 고유하지 않은 경우 _id:
c.name = b.name
해당 필터를 다음으로 변경해야 합니다.
여기서 언급한
을 확인하세요. 으아아아last_id
를 반드시_id
로 정의하지 마세요. 그 원리는 정렬된 필드의 마지막 숫자를 찾고, 다음 페이지는 그 숫자에서 시작하는 것입니다. 따라서name
을 기준으로 정렬되었으므로last_id
은 실제로 C의name
이어야 합니다. 다음에는그러나 이 페이징 방법에는 정렬된 필드가 고유해야 한다는 문제가 있습니다. 그렇지 않으면 일부 문서를 건너뛸 수 있습니다. 예를 들어
와 같이 두 번째 정렬 필드를 추가해야 합니다. 으아아아c.name = b.name
인 경우 위 쿼리는 분명히 레코드 b를 건너뜁니다. 따라서 정렬 필드가 고유하지 않은 경우_id
:해당 필터를 다음으로 변경해야 합니다.
으아아아