Une question un peu étrange sur les performances des requêtes... J'ai besoin d'exécuter une requête qui fait un comptage total des documents, et qui peut également retourner un ensemble de résultats qui peut être limité et décalé.
Ainsi, j'ai 57 documents au total, et l'utilisateur veut 10 documents décalés de 20.
Je vois deux façons de procéder : la première consiste à demander l'ensemble des 57 documents (renvoyés sous forme de tableau), puis à utiliser array.slice pour renvoyer les documents souhaités. La deuxième option consiste à lancer deux requêtes, la première utilisant la méthode native "count" de Mongo, puis une deuxième requête utilisant les agrégateurs natifs $limit et $skip de Mongo.
Lequel, selon vous, serait le plus adapté ? Tout faire en une seule requête, ou en exécuter deux séparément ?
Edita:
// 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});
});
});