mongodb 的分页实现

mongodb默认是提供了类似分页的函数skip,但这个使用起来,数据量一旦大起来,查询效率是非常低的,甚至能达到几百秒,很恐怖。

这里应该用其它给的办法代替,比如说先得到前100条数据,然后用第100条数据里的某一属性做为查询条件,得到剩下的数据,然后再limit(100)。代码如下:

var page1 = db.foo.find().sort({"date" : -1}).limit(100);
var latest = null;
while (page1.hasNext()) {
  latest = page1.next();
  display(latest);
}
// 用第100数据里的date做为查询条件,得到剩下的数据
var page2 = db.foo.find({"date" : {"$gt" : latest.date}});
page2.sort({"date" : -1}).limit(100);

#sort,排序,1为升序,-1为降序
#skip,偏移量
#limit,限制返回数量

但这样实现还是有点问题的,譬如我默认不是从第一页开始的,我直接进入第三页,前面的条件根本就没出现过,那咋办,在网上找了很多基本上没有什么答案,所以针对这种问题,就尽量不要设计这种

1 2 3 4 5 6 7 8 9 数字的点击分页了,直接上一页、下一页得了,如果从浏览器直接输入跳转到后面的页面,那就只有程序判断一下从第一页开始喽!

猜你喜欢

转载自stranger2008.iteye.com/blog/1942930