Немного нечетного в производительности запросов... Мне нужно запустить запрос, который выполняет общее количество документов, а также может возвращать набор результатов, который может быть ограничен и смещен.
Итак, у меня есть 57 документов в целом, и пользователь хочет, чтобы 10 документов смещались на 20.
Я могу подумать о двух способах этого, сначала это запрос для всех 57 документов (возвращаемых как массив), а затем использование array.slice возвращает нужные им документы. Второй вариант состоит в том, чтобы запустить 2 запроса, первый из которых использует метод count count mongo, а затем запустить второй запрос, используя mongo native $limit и $skip aggregators.
Какой, по вашему мнению, будет лучше масштабироваться? Выполнение всего этого в одном запросе или запуск двух отдельных?
Edit:
// 1 query
var limit = 10;
var offset = 20;
Animals.find({}, function (err, animals) {
if (err) {
return next(err);
}
res.send({count: animals.length, animals: animals.slice(offset, limit + offset)});
});
// 2 queries
Animals.find({}, {limit:10, skip:20} function (err, animals) {
if (err) {
return next(err);
}
Animals.count({}, function (err, count) {
if (err) {
return next(err);
}
res.send({count: count, animals: animals});
});
});