java操作mongodb(分页)

来源:互联网 发布:并发编程实践 编辑:程序博客网 时间:2024/06/05 18:41

使用skip+limit的方式实现分页。直接上代码(依赖的代码在上一篇博客中):

[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. /** 
  2.      * 分页查询 
  3.      * @param page 
  4.      * @param pageSize 
  5.      * @return 
  6.      */  
  7.     public List<User> pageList(int page,int pageSize){  
  8.         DB myMongo = MongoManager.getDB("myMongo");  
  9.         DBCollection userCollection = myMongo.getCollection("user");  
  10.           
  11.         DBCursor limit = userCollection.find().skip((page - 1) * 10).sort(new BasicDBObject()).limit(pageSize);     List<User> userList = new ArrayList<User>();  
  12.         while (limit.hasNext()) {  
  13.             User user = new User();  
  14.             user.parse(limit.next());  
  15.             userList.add(user);  
  16.         }  
  17.         return userList;  
  18.     }  


 

[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. List<User> list = userAction.pageList(1,10);  
  2.         for(User user : list){  
  3.             System.out.println(user);  
  4.         }  
  5.         System.out.println("=======================");  
  6.         list = userAction.pageList(2,10);  
  7.         for(User user : list){  
  8.             System.out.println(user);  
  9.         }  


输出如下:

[plain] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. id:2,name:manman,address:beijing  
  2. id:1,name:jinhui,address:beijing  
  3. id:3,name:3,address:3  
  4. id:4,name:4,address:4  
  5. id:5,name:5,address:5  
  6. id:6,name:6,address:6  
  7. id:7,name:7,address:7  
  8. id:8,name:8,address:8  
  9. id:9,name:9,address:9  
  10. id:10,name:10,address:10  
  11. =======================  
  12. id:11,name:11,address:11  
  13. id:12,name:12,address:12  
  14. id:13,name:13,address:13  
  15. id:13,name:13,address:13  
  16. id:13,name:13,address:13  
  17. id:13,name:13,address:13  
  18. id:13,name:13,address:13  


 注意:

使用skip跳过少量的数据是很好的选择,但是如果跳过大量的数据的时候,skip方法就会执行的很慢。所以我们要尽量的避免使用skip跳过大量的数据。后面我们会提到如何优化大数据量的分页。

0 0