Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.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获取下一批(获取多个文档)_Mongodb_Cursor - Fatal编程技术网

mongoDB获取下一批(获取多个文档)

mongoDB获取下一批(获取多个文档),mongodb,cursor,Mongodb,Cursor,我试着用mongoDB对成千上万的文档进行分页, 我知道对于这些数据量,我需要使用光标 如果我想在每次通话中获得10份文档,我该怎么做 我试着做: var cursor = db.collection('person').find({}); cursor.batchSize(10); 但是我现在应该运行什么命令来获取接下来的10个文档呢? 如果我使用cursor.next()我只会得到下一个文档 我需要一个命令,所以当我运行它时,一旦我得到前10个文档,当我再次运行相同的命令时,我将得到下10

我试着用mongoDB对成千上万的文档进行分页, 我知道对于这些数据量,我需要使用光标

如果我想在每次通话中获得10份文档,我该怎么做

我试着做:

var cursor = db.collection('person').find({});
cursor.batchSize(10);
但是我现在应该运行什么命令来获取接下来的10个文档呢? 如果我使用
cursor.next()
我只会得到下一个文档

我需要一个命令,所以当我运行它时,一旦我得到前10个文档,当我再次运行相同的命令时,我将得到下10个文档(文档11-20)

如果游标不是这样工作的,请解释我应该做什么(如果应该包含代码,Javascript将是伟大的)


谢谢,所以您可以尝试使用分页。为此,您可以使用find query with limit(不使用游标):


看一看。还有其他选项可用于分页。

但当我想跳转到另一页时(如果我想跳转到第2页,而我想跳转到第24页),此解决方案会出现问题。如果我不能使用游标,为什么会有游标batchSize(1)?(如果我无法获得接下来的10项)?@reqres您在理解
batchSize
的要点时遇到了困难。。。它并不是要像一个生成器一样给你一个文档列表。。。它旨在限制对MongoDB服务器的请求大小,而不必在一次swing中加载整个集合(非常糟糕的内存管理)。一次获取一个文档会增加连接到数据库的开销,因为内存问题,获取所有文档是不好的。批量大小提供了一种平衡。
//Page 1
db. person.find().limit(pageSize);
//Find the id of the last document in this page
last_id = ...

//Page 2
users = db. person.find({'_id'> last_id}).limit(10);
//Update the last id with the id of the last document in this page
last_id = ...

//Page 3
users = db. person.find({'_id'> last_id}).limit(20);
last_id = ...