我正在尝试对我从mongoDB
获取的搜索结果进行分页,我正在使用mongoDB
聚合,现在我遇到的问题是因为我可以使用$ skip和$ limit来实现分页我怎么知道下一页是否存在。我使用这个逻辑假设我在一个页面中显示20个结果现在我将调用21个结果并查看结果是21还是小于21,如果它是21然后这意味着至少有一个结果留下所以下一页是那里否则没有页面。我的代码在下面给出,一切都工作正常,但我认为,因为我每次在我的服务器上提取一个文档,所以我认为,而不是使用这种方法,我可以在聚合管道中写一些逻辑,这样我就不必从我的数据库中再带一个文档。我的意思是有任何方法,以便我可以在变量中存储1,如果结果超过20,否则为0.我尝试使用这个逻辑,在$ group中有一个变量,并在每个文档上递增,但是无法执行操作成功。
还有另一个解决方案是运行两个查询并行第一个用于计算文档数量,第二个用于获取20个文档,但我不认为这种方法更好,因为它会花费我多一次数据库调用。
我的带有$ skip的代码和每页获取21个结果的$ limit如下所示。
studcouponsmodel.aggregate(
{ $match: { mobile_no: mobile_no }},
{ $unwind: '$cpns'},
{ $match: {'cpns.expir_date': { $lt: curr_time }}},
{ $group: {_id: '$mobile_no', cpns: {$push: '$cpns.id'}}},
{ $limit: page_size + 1 },
{ $skip: page * page_size },
function(err, docs) {
if (err) {
console.log('Error Finding query results');
console.log(err);
res.json({success: 0, message : err});
return next(err);
} else {
}
});
任何人都可以告诉我任何更好的方法,或者你们都试图使用聚合在mongoDB
中进行分页。