查询性能有点奇怪......我需要运行一个查询,它可以计算文档总数,并且还可以返回一个可以限制和偏移的结果集。
所以,我总共有 57 个文档,用户想要 10 个文档抵消 20。
我可以想到 2 种方法,首先是查询所有 57 个文档(作为数组返回),然后使用 array.slice 返回他们想要的文档。第二个选项是运行 2 个查询,第一个使用 mongo 的本机 'count' 方法,然后使用 mongo 的本机 $limit 和 $skip 聚合器运行第二个查询。
你认为哪个会更好扩展?在一个查询中完成所有操作,还是运行两个单独的查询?
编辑:
// 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});
});
});