开发者社区> 问答> 正文

mongodb多集合如何实现分页查询?

mongodb中有两个集合:user以及topic
user中字段为:userId,userName,userImage
topic中字段为:topicId,userId,topicText,topicImage
现在要实现分页查询,客户端一个get请求需要得到userName,userImage,topicText,topicImage.如果一次返回20条数据,下一次返回接下来的20条,该如何实现?
我查到的是分页主要就是用到2个函数:limit和skip
但是,数据量太大的时候,就不适合用skip分页了。
《MongoDB权威指南》中给出的解决方案是:获取上一页的最后一条数据,然后使用gt和limit获取下一页的数据。
如果数据量达到100万加或者某一个数量级时,是否要加缓存?什么时候需要加缓存?mongodb单纯的实现分页可以不加缓存吗??

展开
收起
蛮大人123 2016-02-19 11:03:18 3762 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    首先,Mongodb中,skip()略过太多数据,会引起效率低下,这是毋庸置疑的。
    一般情况下,过多数据大多会使用《MongoDB权威指南》里中提供的方法,当然前提是你比较在乎性能方面提升,至于缓存的使用应该与当前的业务关联比较大,如果数据实时性比较强的话,当十几页甚至前几十页都不能要缓存,这时缓存需要放在后面已经过时且更新频率较小的数据了;另一种情况就是实时性不强的,可以一开始就加上缓存,这样也避免直接与数据库操作,也提升效率。当然,分页使用缓存也会出现一些问题,例如相邻两页如果缓存更新不及时,可能会出现重复的几条数据,这也是不可避免的。
    考虑到业务方面,如果真有100万或者更多的数据,用户真的会一直往后翻?哪怕我们自己用也不一定会一直往后看吧,如果仅仅用于数据方面的东西的话,也可以不用分页,可以用MongoDB的游标,一条一条数据的过滤。具体使用还是在楼主根据实际业务来判断了

    2019-07-17 18:44:27
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Data as a Service - 数据即服务 -- MongoDB⾼级应⽤模式 立即下载
开源数据库 MongoDB 专场 MongoDB疑难杂症分析及优化 立即下载
饿了么高级架构师陈东明:MongoDB是如何逐步提高可靠性的 立即下载