mongoDB 分页

  Criteria criteria = new Criteria();
       /* 暂无条件
       if (StringUtils.isNotBlank(phone)) {
            criteria.orOperator(Criteria.where("phone").is(phone)
                    , Criteria.where("result.jd_protype_data.self_phone_list").elemMatch(Criteria.where("phone").is(phone))
                    , Criteria.where("result.jd_protype_data.consignee_jd_contact_list").elemMatch(Criteria.where("phone").is(phone)));
        }*/
        Query query = new Query(criteria);
        //mongoTemplate.count计算总数
        long total = mongoTemplate.count(query, interfaceName);
 //总页数
 
            long totalPageNum = (total + pageSize - 1) / pageSize;
            String mid = "";
            for (int i = 1; i <= totalPageNum; i++) {
                log.info("---------------第" + i + "页----------------");
                Set<String> set = new HashSet<String>();
                try {
                    BasicDBObject totalCon = new BasicDBObject();
                    if (StringUtils.isNotBlank(mid)) {
                        totalCon.put("_id", new BasicDBObject("$gt", new ObjectId(mid)));
                    }
                    DBCursor dbObjects = getPageList(pageSize, interfaceName, totalCon);
                    while (dbObjects.hasNext()) {
                        DBObject dbObject = dbObjects.next();
                        //log.error(  dbObject.toString());
                        String str = dbObject.toString();
                        getPhoneStr(str, set);
                        mid = dbObject.get("_id").toString();
                    }
                    getMemberList(set);

                } catch (Exception e) {
                    log.info("mongoDB爆炸了,查询异常");
                    log.info("异常信息:{}", e);
                    e.printStackTrace();
                }
            }
   /**
     * 大数据量排序方式分页获取数据
     *
     * @param collectionName 表名
     * @param totalCon       查询条件汇总
     */
    public DBCursor getPageList(int pageSize, String collectionName, BasicDBObject totalCon) {
        try {
            return mongoTemplate.getCollection(collectionName).find(totalCon).sort(new BasicDBObject("_id", 1)).limit(pageSize);
        } catch (Exception e) {
            log.error("***大数据量数据分页查询失败,collectionName=" + collectionName, e);
        }
        return null;
    }

MongoDB中进行分页查询可以通过使用MongoDB分页插件来实现。首先,需要配置MongoDB的相关信息。在配置类中使用@Configuration注解标记,并使用@Autowired注解将MongoTemplate注入进来。然后,使用@Bean注解标记一个方法,返回MongoPageHelper实例,该实例需要传入MongoTemplate对象作为参数。这样就完成了MongoDB配置的准备工作。 接下来,需要使用正确的分页办法来实现分页查询。在MongoDB中,推荐的分页解决方案是先查询当前页的第一条数据,然后按顺序查询pageSize条数据。这样可以提高查询的效率。 如果你想使用开箱即用的分页能力,可以使用MongoDB分页插件。该插件为MongoDB提供了方便的分页功能。你可以在我的博客中找到如何使用Maven引入该插件的详细信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [MongoDB分页的Java实现和分页需求的思考](https://blog.csdn.net/weixin_34303897/article/details/86400025)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [mongo-page-helper:MongoDB分页插件](https://download.csdn.net/download/weixin_42098759/18715448)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值