mongodb寫分頁查詢語句的方法

這篇文章主要介紹MongoDB寫分頁查詢語句的方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)建站主營石城網站建設的網絡公司,主營網站建設方案,重慶APP軟件開發(fā),石城h5小程序設計搭建,石城網站營銷推廣歡迎石城等地區(qū)企業(yè)咨詢

一、簡介

SpringData  MongoDB提供了org.springframework.data.mongodb.core.MongoTemplate對MongoDB的find的操作,分頁查詢是返回到匹配文檔的游標,可以隨意修改查詢限制、跳躍、和排序順序的功能。

我們在查詢時find()方法接受Query類型有:

(1)org.springframework.data.mongodb.core.query

(2)org.springframework.data.mongodb.core.query.BasicQuery

Query類提供方法有l(wèi)imit、skip、sort查詢限制、跳躍、和排序順序的功能,BasicQuery繼承了Query類。

mongodb寫分頁查詢語句的方法

二、基本分頁

Query類提供方法有l(wèi)imit、skip、sort查詢限制、跳躍、和排序順序的功能,我們實現(xiàn)Query查詢分頁。

第一步:實現(xiàn)分頁工具類

package com.qt.robot.mongoEntity;
 
import java.util.List;
 
/**
 * 分頁
 * @author 作者:yaohongan
 * @create 創(chuàng)建時間:2018年10月9日上午9:53:15
 *
 */
public class Page<T> {
 
    // 結果集
    private List<T> datas;
 
    // 查詢記錄數(shù)
    private int rowCount;
 
    // 每頁多少條數(shù)據
    private int pageSize = 10;
 
    // 第幾頁
    private int pageNo = 1;
 
    // 跳過幾條數(shù)
    private int skip = 0;
 
    /**
     * 總頁數(shù)
     * @return
     */
    public int getTotalPages() {
 
        return (rowCount + pageSize - 1) / pageSize;
    }
 
    public List<T> getDatas() {
 
        return datas;
    }
 
    public void setDatas(List<T> datas) {
 
        this.datas = datas;
    }
 
    public int getRowCount() {
 
        return rowCount;
    }
 
    public void setRowCount(int rowCount) {
 
        this.rowCount = rowCount;
    }
 
    public int getPageSize() {
 
        return pageSize;
    }
 
    public void setPageSize(int pageSize) {
 
        this.pageSize = pageSize;
    }
 
    public int getSkip() {
 
        skip = (pageNo - 1) * pageSize;
        return skip;
    }
 
    public void setSkip(int skip) {
 
        this.skip = skip;
    }
 
    public int getPageNo() {
 
        return pageNo;
    }
 
    public void setPageNo(int pageNo) {
 
        this.pageNo = pageNo;
    }
 
}

第二步:實現(xiàn)分頁

/**
     *
     * @author 作者:yaohongan
     * @create 創(chuàng)建時間:2018年10月9日下午3:17:03
     * @desc 分頁根據條件查詢機器人id
     */
    public Page<VoiceInteractionStatisticsEntity> getVoiceInteractionStatistics(int pageNo, int pageSize,
            String robotId, String robotTypeId) {
 
        Page<VoiceInteractionStatisticsEntity> page = new Page<VoiceInteractionStatisticsEntity>();
        page.setPageNo(pageNo);
        page.setPageSize(pageSize);
        Query query = new Query();
        Criteria criteria = new Criteria();
        int count = 0;
        // 查詢總數(shù)
        // 只分頁查詢
        if (StringUtils.isBlank(robotId) && StringUtils.isBlank(robotTypeId)) {
            count = (int) mongoTemplate.count(query, collectionName);
            page.setRowCount(count);
        }
        // 根據robotId(機器人id)查詢
        if (StringUtils.isNoneBlank(robotId)) {
            criteria = Criteria.where("robotId").is(robotId);
            query = new Query(criteria);
            count = (int) mongoTemplate.count(query, collectionName);
            page.setRowCount(count);
        }
        // 根據robotTypeId(機器人設備id)查詢
        if (StringUtils.isNoneBlank(robotTypeId)) {
            criteria = Criteria.where("robotTypeId").is(robotTypeId);
            query = new Query(criteria);
            count = (int) mongoTemplate.count(query, collectionName);
            page.setRowCount(count);
        }
        // 根據robotId、robotTypeId查詢
        if (StringUtils.isNoneBlank(robotId) && StringUtils.isNoneBlank(robotTypeId)) {
            criteria = Criteria.where("robotTypeId").is(robotTypeId).and("robotId").is(robotId);
            query = new Query(criteria);
            count = (int) mongoTemplate.count(query, collectionName);
            page.setRowCount(count);
        }
 
        query.skip(page.getSkip()).limit(page.getPageSize());
        List<VoiceInteractionStatisticsEntity> datas = mongoTemplate.find(query, 
        VoiceInteractionStatisticsEntity.class, collectionName);
        page.setDatas(datas);
        return page;
    }

第三步:應用查詢

/**
     *
     * @author 作者:yaohongan
     * @create 創(chuàng)建時間:2018年10月9日上午10:00:50
     * @desc 實時統(tǒng)計語音交互明細
     */
    public List<VoiceInteractionStatistics> detailStatistics(int pageNo, int pageSize, String robotId,
            String robotTypeId) {
 
        List<VoiceInteractionStatistics> detailStatisticsList = new ArrayList<>();
 
        Date date = new Date();
        date.setHours(0);
        date.setMinutes(0);
        date.setSeconds(0);
        Date date1 = new Date();
        Calendar calc = Calendar.getInstance();
        calc.setTime(date);
        calc.add(calc.DATE, -1);
        Date minDate = calc.getTime();
        Criteria today = null;
        Criteria yesterday = null;
        Criteria total = null;
        Query queryByToday = null;
        Query queryByYesterday = null;
        Query queryByTotal = null;
        // 根據條件查詢機器人id
        Page<VoiceInteractionStatisticsEntity> page = getVoiceInteractionStatistics(pageNo, pageSize, robotId,
                robotTypeId);
        if (page != null) {
            List<VoiceInteractionStatisticsEntity> list = page.getDatas();
            for (VoiceInteractionStatisticsEntity voiceInteractionStatisticsEntity : list) {
                // 查詢今日消息數(shù)
                today = Criteria.where("time").gte(date).lt(date1).and("robotId")
                        .is(voiceInteractionStatisticsEntity.getRobotId());
                queryByToday = new Query(today);
                int todayTotal = (int) mongoTemplate.count(queryByToday, collectionName);
                // 查詢昨日消息數(shù)
                yesterday = Criteria.where("time").gte(minDate).lt(date).and("robotId")
                        .is(voiceInteractionStatisticsEntity.getRobotId());
                queryByYesterday = new Query(yesterday);
                int yesterdayTotal = (int) mongoTemplate.count(queryByYesterday, collectionName);
                // 查詢訪問總量
                total = Criteria.where("robotId").is(voiceInteractionStatisticsEntity.getRobotId());
                queryByTotal = new Query(total);
                int totals = (int) mongoTemplate.count(queryByTotal, collectionName);
                String robotId1 = voiceInteractionStatisticsEntity.getRobotId();
                String robotTypeId1 = voiceInteractionStatisticsEntity.getRobotTypeId();
                String robotTypeName = voiceInteractionStatisticsEntity.getRobotTypeName();
                VoiceInteractionStatistics voiceInteractionStatistics = new VoiceInteractionStatistics
                (robotId1, robotTypeId1, robotTypeName, todayTotal, yesterdayTotal, totals);
                detailStatisticsList.add(voiceInteractionStatistics);
 
            }
        }
 
        return detailStatisticsList;
    }

以上是mongodb寫分頁查詢語句的方法的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

文章名稱:mongodb寫分頁查詢語句的方法
URL網址:http://bm7419.com/article48/jdihep.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、自適應網站、品牌網站建設、網站設計外貿建站、全網營銷推廣

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

手機網站建設