Метеор: как найти запись в коллекции

Ivan Prizov спросил: 28 марта 2018 в 03:05 в: meteor

Я работаю над разбиением на страницы на основе курсора, и мне нужно найти позицию записи в коллекции по ее _id. Можно ли это сделать, используя только запрос mongo (или несколько запросов) и не извлекать все записи и подсчет, потому что это неэффективно, если коллекция содержит миллионы записей, а также использование поля createdBy, поскольку может быть создано несколько записей в то же время.

_ids - это строки, поэтому я не могу просто сделать что-то вроде

 n = myCollection.find({ _id: { $lte : 12345}}).count() ;

1 ответ

Есть решение
Derek Brown ответил: 29 марта 2018 в 12:38

По умолчанию запрос Meteor .find() сортирует записи в их естественном порядке. Это основано не на _id, а на положении записей на диске.

Вместо этого вам нужно явно определить параметр 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.
 });