我需要使用skip和limit来分页,而distinct则不返回相等的值.
如果我使用
MyModel.find().distinct('blaster', function(err, results) {
res.render('index', {
data: results
});
});
这有效.
如果我使用
MyModel.find().sort('brand').skip((page-1)*15).limit(15).exec(function(err, results) {
res.render('index', {
data: results
});
});
这也有效,但如何同时使用?
如果我尝试,错误将显示:
Error: skip cannot be used with distinct
解决方法:
你不这样做. .distinct()
是一个返回“数组”的方法,因此你不能修改像“光标”那样的“光标”,如.limit()和.skip().
你想要的是.aggregate()
方法.不仅仅是添加东西:
MyModel.aggregate(
[
{ "$group": { "_id": "$blaster" } },
{ "$skip": ( page-1 ) * 15 },
{ "$limit": 15 }
],
function(err,results) {
// results skipped and limited in here
}
);
聚合框架提供了另一种实现“不同”结果的方法.但是以更灵活的方式.请参阅$group
,$skip
和$limit
的运算符.