node.js - mongodb多集合如何实现分页查询?nodejs
ringa_lee
ringa_lee 2017-04-17 11:36:29
0
1
583

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单纯的实现分页可以不加缓存吗??
谢谢了

ringa_lee
ringa_lee

ringa_lee

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