Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 当投影中不包含唯一字段时,如何在NoSQL数据库中对查询结果进行分页?_Mongodb_Pagination - Fatal编程技术网

Mongodb 当投影中不包含唯一字段时,如何在NoSQL数据库中对查询结果进行分页?

Mongodb 当投影中不包含唯一字段时,如何在NoSQL数据库中对查询结果进行分页?,mongodb,pagination,Mongodb,Pagination,我听说使用MongoDB的skip()来批处理查询结果是一个坏主意,因为它会导致服务器受到IO约束,因为它必须“遍历”所有结果。我只想一次最多返回200个文档,然后用户将能够获取下一个200个文档,如果他们愿意的话(假设他们没有限制为更少) 最初我阅读了分页结果,我读到的大多数东西都说MongoDB中最简单的方法至少是修改查询条件以模拟跳过 例如,如果上一张单据上名为account number的字段为28022004,则下一次查询的条件中应包含“accNumber>28022004”。但是,如

我听说使用MongoDB的skip()来批处理查询结果是一个坏主意,因为它会导致服务器受到IO约束,因为它必须“遍历”所有结果。我只想一次最多返回200个文档,然后用户将能够获取下一个200个文档,如果他们愿意的话(假设他们没有限制为更少)

最初我阅读了分页结果,我读到的大多数东西都说MongoDB中最简单的方法至少是修改查询条件以模拟跳过


例如,如果上一张单据上名为account number的字段为28022004,则下一次查询的条件中应包含“accNumber>28022004”。但是,如果投影中没有包含唯一字段,该怎么办?如果用户希望按非唯一字段对记录进行排序,该怎么办?

文档和研究将指出,以这种方式分页大量页面是一个问题。基本上,您不希望为了进入下一页而“跳过”100000个文档。范围查询是首选,但有时在到达时不可能。一般情况下,你的用户会“深入到什么程度”?如果他们必须经常深入研究,那么就要制定一个有效的策略。在这一点上可能是一个相当广泛的话题。几百次跳过实际上不会对事情产生太大的影响。根据构建应用程序所使用的技术,您可以将数据库光标保留在内存中,并使用
next()
读取条目。添加(作为最后的排序标准)对ID值进行排序怎么样?例如,如果第一个“批处理”中断的两个记录的第一个排序字段的值相同,则它们将按ID值排序?因为ID永远都是独一无二的,这行吗?