博主自主知识产权《Spring Boot深入浅出系列课程》(16章97节文档) 已经上线,请关注

MongoDB数据分页与排序

mongodb 字母哥 0评论

Mongodb数据分页与排序


db.books.insert([{"title" : "PHP 教程" }, {"title" : "Java 教程"}, {"title" : "MongoDB 教程"}, {"title" : "C 教程"}, {"title" : "C++ 教程"}, {"title" : "oracle 教程"}])

分页排序相关api

  • count:统计总数,效率较低
    db.books.find().count();
  • limit:限制单页数据量
    db.books.find().limit(2);
  • skip:跳过n条数据,效率较低
    db.books.find().limit(2).skip(2);
    db.books.find().skip(2).limit(2);
  • sort:排序(1:升序,-1:降序)
    db.books.find().limit(2).skip(2).sort({title:1});
    函数顺序:先排序sort,再skip,最后limit

mongodb分页排序方案

方案一:limit,skip,sort。

首先:count()总数
第一页:db.books.find().limit(3);
第二页:db.books.find().limit(3).skip(3);

方案二:

首先:count()总数
第一页:db.books.find().limit(3);
第二页:db.books.find({_id: {$gt: <第一页的最后一个 ID>}}).limit(3).sort({_id: 1});
id是有顺序的,而且不重复。(id+增量)

方案三:

固定限制只显示10页,每页50条,这样避免了count(),skip效率不会太低。

  • 分析:
    方案一性能最差,count和skip一个也没避开。可以跨页翻页,完整性较好。
    方案二性能适中,避开了skip。但数据翻页不能跨页翻页。按顺序翻页
    方案三性能最好,但是数据完整性较差。
    通常情况下,用户不会要求在web端完整的显示大数据,可以做出合理的解释。所以通常选择第三种。
喜欢 (1)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址