我需要使用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
答案 0 :(得分:8)
你不这样做。 .distinct()
是一个返回“数组”的方法,因此您无法使用“.limit()
和.skip()
等”光标修饰符“修改不是”光标“的内容。
你想要的是.aggregate()
方法。不仅仅是添加东西:
MyModel.aggregate(
[
{ "$group": { "_id": "$blaster" } },
{ "$skip": ( page-1 ) * 15 },
{ "$limit": 15 }
],
function(err,results) {
// results skipped and limited in here
}
);