mongodb中skip()和limit()之间的小疑问

Mongodb的分页问题
不懂就问:skip(A).limit(B),AB之间是否存在某种关系

db.*****.sort({:*}).skip(100).limit(100).**
本人的理解为:通过某种条件进行排序,之后100条为一页,取前100进行操作。

如果1:
.sort({:}).skip(100).limit(70).**
我认为:通过排序,100条为一页,取前70条
问题:如果再次执行此命令,相同的排序和分页,再取70条数据,是否是从71条开始取数据,是否会出现重复的情况

如果2:
.sort({:}).skip(100).limit(120).**
问题:同上再次执行此命令,第二次取数据是否是从第121条开始取

望指点迷津

基于Monster 组和GPT的调写:
在 MongoDB 中,使用 skip()limit() 进行分页时,它们之间存在一定的关系。下面我会解答你的问题并提供一些指导:

  1. 对于命令 .sort({...}).skip(100).limit(100).**
    你的理解是正确的。首先,数据按指定条件进行排序,然后从第 101 条记录开始跳过 100 条数据,接着只返回后续的 100 条数据作为结果。

    如果再次执行相同的命令,不会出现重复的情况。因为每次执行命令时,MongoDB 会按照相同的排序条件重新进行排序,并且 skip()limit() 的参数保持不变。因此,第二次执行命令将会跳过前 100 条数据,并返回接下来的 100 条数据,不会包含前面已经获取的数据。

  2. 对于命令 .sort({...}).skip(100).limit(70).**
    在这种情况下,排序后跳过前 100 条数据,然后只返回接下来的 70 条数据。如果再次执行相同的命令,将会跳过前 100 条数据,然后返回接下来的 70 条数据,这次会从第 171 条数据开始。

  3. 对于命令 .sort({...}).skip(100).limit(120).**
    在这种情况下,排序后跳过前 100 条数据,然后返回接下来的 120 条数据。如果再次执行相同的命令,将会跳过前 100 条数据,然后返回接下来的 120 条数据,这次会从第 221 条数据开始。

总结起来,.skip().limit() 的参数是相对的,而不是绝对的记录索引。每次执行命令时,都会重新排序,并根据新的排序顺序和参数返回相应的结果。因此,不会出现重复的情况,而是从跳过的位置继续取数据。