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