我正在处理基于光标的分页,我需要通过_id找到记录在集合中的位置。是否可以这样做,仅使用mongo查询(或多个查询),而不是获取所有记录并进行计数,因为如果集合包含数百万条记录以及使用createdBy字段,那么效率很低,因为很少有记录可以创建在同一时间。
_ids是字符串,所以我不能只做像
这样的事情 n = myCollection.find({ _id: { $lte : 12345}}).count() ;
答案 0 :(得分:2)
默认情况下,Meteor .find()
查询按自然顺序对记录进行排序。这不是基于_id
,而是基于记录on disk的位置。
相反,如果您希望按sort
排序记录,则需要显式定义_id
参数。因此,您的查询应如下所示:
// pageNo = the page number
// pageSize = number of records per page
records = myCollection.find({}, {
sort: { '_id' : 1 }, // Sort by _id in ascending order
limit: pageSize // Only return pageSize elements
skip: pageSize*pageNo // Skip the elements fetched on previous pages.
});