流星:如何在集合中找到记录的位置

时间:2018-04-21 16:45:18

标签: meteor

我正在处理基于光标的分页,我需要通过_id找到记录在集合中的位置。是否可以这样做,仅使用mongo查询(或多个查询),而不是获取所有记录并进行计数,因为如果集合包含数百万条记录以及使用createdBy字段,那么效率很低,因为很少有记录可以创建在同一时间。

_ids是字符串,所以我不能只做像

这样的事情
 n = myCollection.find({ _id: { $lte : 12345}}).count() ;

1 个答案:

答案 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.
 });