为了账号安全,请及时绑定邮箱和手机立即绑定

mongo查询时,能否先统计数量,再获取skip和limit后的值?

mongo查询时,能否先统计数量,再获取skip和limit后的值?

holdtom 2019-03-05 17:18:32
因为经常要做分页, 所以需要用到 skip和limit来获取当前页的值,但是 在获取总页数, 所以有没有方式可以在一次查询中获取 总页数和 当前页的值?现在是 分两次查询,结果再结合在一起。1. count()2. .skip(*).limit(*)
查看完整描述

3 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

没有一次查询返回的,不过你可以将这两个方法封装一下,每次调用不就可以么?


async function getPage(pageNo, pageSize, query) {

    let count = await db.count(query);

    let list = await db.find(query).skip((pageNo - 1)*pageSize).limit(pageSize);

    return {

        count,

        list

    };

}


查看完整回答
反对 回复 2019-03-13
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

我觉得楼上的两种做法欠妥,因为count的实现是这样的


> db.tasks.count

function ( x ){

    return this.find( x ).count();

}

这是在mongodb的cli里面输出的。

一句话概述就是count其实还是调用的find。

所以这种查两次数据库的方法我认为是欠妥的。


查看完整回答
反对 回复 2019-03-13
  • 3 回答
  • 0 关注
  • 986 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号