我尝试使用mongoDB进行数千/数百万个文档的分页, 据我所知,对于这些数据,我需要使用Cursor。
如果我想在每次通话中获得10个文件,我该怎么办?
我试着这样做:
var cursor = db.collection('person').find({});
cursor.batchSize(10);
但我现在应该运行什么命令来获取接下来的10个文件?
如果我使用cursor.next()
,我只会得到下一个文件。
我需要一个命令,所以当我运行它一次获得前10个文档时,当我再次运行相同的命令时,我将获得接下来的10个文档(文档11-20)。
如果光标不能像那样工作,请解释我该怎么做(如果代码应该包含在内,Javascript会更好)
由于
答案 0 :(得分:1)
所以你只是尝试使用分页。为此你可以使用查询限制(并且不使用游标):
//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 = ...
看看Pagination, Approach 2。还有其他选择可以达到分页。