java操作mongodb(分页优化)
2014-12-23 12:08
447 查看
前面我们提到过,大数据量分页时,skip如果跳过大量的数据会很慢,这里针对这一情况,我们优化一下分页。
看代码:
输出结果如下:
我们依靠记录排序,记录下上一页排序列的最大值,来进行下一次分页。从而避免了使用skip操作。
看代码:
/** * 大数据量数据分页优化 * @param page * @param pageSize * @param lastId 上一页的最大id * @return */ public List<User> largePageList(int page, int pageSize, int lastId) { DB myMongo = MongoManager.getDB("myMongo"); DBCollection userCollection = myMongo.getCollection("user"); DBCursor limit = null; if (page == 1) { limit = userCollection.find() .sort(new BasicDBObject("id", 1)).limit(pageSize); } else { limit = userCollection .find(new BasicDBObject("id", new BasicDBObject( QueryOperators.GT, lastId))) .sort(new BasicDBObject("id", 1)).limit(pageSize); } List<User> userList = new ArrayList<User>(); while (limit.hasNext()) { User user = new User(); user.parse(limit.next()); userList.add(user); } return userList; } public static void main(String[] args) { UserDao userDao = new UserDao(); List<User> largePageList = userDao.largePageList(1,5,0);//第一页 print(largePageList); System.out.println("============"); List<User> largePageList2 = userDao.largePageList(2,5,5);//第二页 需要记录上一页的最大id print(largePageList2); System.out.println("============"); List<User> largePageList3 = userDao.largePageList(3,5,11);//第三页 需要记录上一页的最大id print(largePageList3); } public static void print(List<User> largePageList){ for(User user : largePageList){ System.out.println(user); } }
输出结果如下:
id:1,name:jinhui,address:beijing id:2,name:manman,address:beijing id:3,name:3,address:3 id:4,name:4,address:4 id:5,name:5,address:5 ============ id:6,name:6,address:6 id:7,name:7,address:7 id:8,name:8,address:8 id:9,name:9,address:9 id:11,name:11,address:11 ============ id:12,name:12,address:12
我们依靠记录排序,记录下上一页排序列的最大值,来进行下一次分页。从而避免了使用skip操作。
相关文章推荐
- java操作mongodb(分页优化)
- java操作mongodb(分页)
- java MongoDB分页优化
- JavaWEB--POI之EXCEL操作、优化、封装详解系列(六)--PoiExportUtil使用文档(2)分页
- java操作mongodb(分页)
- Java中Mongodb的分页优化
- Java操作MongoDB模糊查询和分页查询
- mongodb系列之五:java分页优化
- 【MongoDB for Java】Java操作MongoDB
- 关于JAVA的分页查询操作技术
- 如何用Java操作MongoDB(3)
- 关于JAVA的分页查询操作技术
- Mongodb快速入门之使用Java操作Mongodb
- java操作MongoDB存储文件
- 如何用Java操作MongoDB(1)
- Java 操作 MongoDB
- 关于JAVA的分页查询操作技术(zz)
- mongodb的java客户端操作
- 【MongDB for Java】Java操作MongoDB
- 如何用Java操作MongoDB(2)