收藏
回答

聚合查询可以分页吗?

才发现聚合里面的skip和collection里面的skip是不一样的,尝试过这样操作,报错了:

return db.collection('items').skip(event.skip).get().aggregate().sort({


回答关注问题邀请回答
收藏

1 个回答

  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    2019-11-20

    get()就已经结束了

    // per每页显示数,p为页码,1开始

    let per = Math.max(10, event.per||0), p = Math.max(1, event.p||0)

    db.collection('items').aggregate()

    .match({

        state:1 // 查询state为1的数据

    })

    .skip((p - 1) * per)

    .limit(per)

    .sort({

        _id:-1 // _id降序

    })

    .end()

    2019-11-20
    赞同 1
    回复 3
    • 扭纹柴
      扭纹柴
      2019-11-20
      谢谢大佬,我刚刚又把代码写了一遍,已经可以有我预期的效果了,之前我以为skip是在limit的基础上执行的(比如说limit10,skip5,那么最后出来的结果就是5而不是10)最后,大佬能留个联系方式吗?我微信13028809527,再次感谢!
      2019-11-20
      回复
    • 扭纹柴
      扭纹柴
      2019-11-20
      我知道之前为什么会出现limit10skip5会只剩下5条数据了,是因为我把limit写在前面,skip写在后面:
      .limit().skip()
      2019-11-20
      回复
    • o0o有脾气的酸奶
      o0o有脾气的酸奶
      2019-11-20回复扭纹柴
      前后应该没什么影响
      skip就是跳过的意思
      比如每页显示10条数据
      第一页之前就是没有数据,就是p-1=0 0 * 10 = 0,所以跳过0条
      第二页就是除去第一页10条,往后的10条数据,所以要跳过 (2-1)*10 = 10条
      第三页就是除去第1和2页的20条,往后的10条数据,所以要跳过 (3-1)*10 = 20条
      依次类推
      2019-11-20
      回复
登录 后发表内容
问题标签