Я ищу решение для следующего:
У меня есть сортируемая, разбитая на страницы таблица, представляющая коллекцию в mongodb
Чтобы взять начальные результаты и на каждой странице я использую следующее
var defaultRows = 10;
var defaultPage = 1;
var defaultSort = ['name'];
var page = defaultPage - 1;
var totalPages = Math.ceil(db.table.count() / defaultRows);
var results = db.table.find().skip(page * defaultRows).limit(defaultRows).sort(defaultSort);
Итак, я ищу решение для поиска документа и возвращаю точную страницу этого документа в соответствии с переменной sort.
Я придумал это, но это не очень хорошо подходит для больших коллекций.
var counter = 0;
var page = 1;
var queryName = 'smth';
db.table.find().sort(defaultSort).forEach( function ( doc ) {
if ( doc.name === query.Name ) return false;
counter++;
if ( counter === 10 ) { counter = 0; page++ };
});
print page; // Here page will give me the correct page
Но если у меня большая таблица, не было бы неправильно анализировать ее через forEach и загружать как коллекцию? Есть ли более простой способ сделать это, который является более масштабируемым.
* Конечно, это простой консольный скрипт javascript для mongo, я использую mongoosedb в качестве драйвера node.js, но он выглядит очень похоже на это!