最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在Java中使用MongoDB的方法詳解

 更新時(shí)間:2023年12月20日 08:32:08   作者:Ifnew  
這篇文章主要給大家介紹了關(guān)于在Java中使用MongoDB的相關(guān)資料,要操作MongoDB數(shù)據(jù)庫你需要使用MongoDB的Java驅(qū)動(dòng)程序,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

一、mongoDB簡介

MongoDB 是由 C++ 語言編寫的,基于分布式文件存儲的數(shù)據(jù)庫,是一個(gè)介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是最接近于關(guān)系型數(shù)據(jù)庫的 NoSQL 數(shù)據(jù)庫。
MongoDB 旨在為 WEB 應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲解決方案。

MongoDB 將數(shù)據(jù)存儲為一個(gè)文檔,數(shù)據(jù)結(jié)構(gòu)由鍵值(key=>value)對組成。MongoDB 文檔類似于JSON對象。字段值可以包含其他文檔,數(shù)組及文檔數(shù)組

類似于

2. MongoDB優(yōu)點(diǎn):數(shù)據(jù)處理能力強(qiáng),內(nèi)存級數(shù)據(jù)庫,查詢速度快,擴(kuò)展性強(qiáng),只是不支持事務(wù)。

3. 使用場景:

1、應(yīng)用不需要事務(wù);

2、數(shù)據(jù)模型無法確定,經(jīng)常發(fā)生變更;

3、應(yīng)用存儲的數(shù)據(jù)很大達(dá)到TB級別以上;

4、應(yīng)用需要大量的地理位置查詢簡單的來說就是數(shù)據(jù)量比較大,而且主要是查詢操作,而且不需要事務(wù)支持

二、MongoDB與Mysql的區(qū)別

三、使用

1、安裝

安裝地址: http://www.mongodb.org/

github: https://github.com/mongodb/

2、在java中使用

引入依賴

      <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>

配置連接參數(shù)

    data:
    mongodb:
      host: 10.0.26.194
      username: wanttop2
      password: Testwanttop2
      port: 27017
      authentication-database: wanttop2
      database: wanttop2

直接使用mongoTemplate

當(dāng)然也可以自己封裝一個(gè)工具類

 @Autowired
    private MongoTemplate mongoTemplate;

單表查詢

        // 判斷 dataType 是否存在,如果存在則添加到查詢條件中
        if (performanceRank.getDataType() != null) {
            query.addCriteria(Criteria.where("dataType").is(performanceRank.getDataType()));
        }
        // 判斷 divisionCode 是否存在,如果存在則添加到查詢條件中
        if (performanceRank.getDivisionCode() != null) {
            query.addCriteria(Criteria.where("divisionCode").is(performanceRank.getDivisionCode()));

        }

        List<SysDimensionDataMarket> sysDimensionDataMarketList = MongoDBUtil.conditionalQuery(query, SysDimensionDataMarket.class, "SysDimensionDataMarket");

3、多表連接查詢

mongoDB中沒有sql的left join 和right join 的類似的概念而是用到了lookup管道操作符

mongoDB3.2版本新增(聚合管道$lookup操作)

完整代碼

    //連表
    LookupOperation cusAndInfoLookup = LookupOperation.newLookup().
                    from("SysProduct").//1.副表表名字
                    localField("prodItemCode").//2.主表的關(guān)聯(lián)字段
                    foreignField("productCode").//3.副表的關(guān)聯(lián)字段
                    as("SysProduct");//4.建議和1一致,結(jié)果的別名
    //如果需要多連表就在寫一個(gè)
    //LookupOperation cusAndInfoLookup1 = LookupOperation.newLookup().
    //                from("SysProduct").//1.副表表名字
    //               localField("prodItemCode").//2.主表的關(guān)聯(lián)字段
    //              foreignField("productCode").//3.副表的關(guān)聯(lián)字段
    //                as("SysProduct");//4.建議和1一致,結(jié)果的別名
            //多表的關(guān)聯(lián)條件,查詢條件均傳入到此
    //創(chuàng)建查詢條件
    Criteria criteria = new Criteria();
       if (totalPerformanceCross.getDataCrossType() != null) {
                criteria.and("dataCrossType").is(totalPerformanceCross.getDataCrossType());
            }
            // 判斷 areaCode 是否存在,如果存在則添加到查詢條件中
            if (totalPerformanceCross.getAreaCode() != null) {
                criteria.and("areaCode").is(totalPerformanceCross.getAreaCode());
            }
            // 判斷 companyCode 是否存在,如果存在則添加到查詢條件中
            if (totalPerformanceCross.getCompanyCode() != null) {
                criteria.and("companyCode").is(totalPerformanceCross.getCompanyCode());
            }
            //如果查詢的字段為附表則需要加上附表名字 
            if (totalPerformanceCross.getDateType() != null) {
                criteria.and("SysProduct.dateType").is(totalPerformanceCross.getDateType());
            }
      //多表的關(guān)聯(lián)條件,查詢條件均傳入到此
            Aggregation aggregation = Aggregation.newAggregation(
                    //連表?xiàng)l件
                    cusAndInfoLookup,
                    //cusAndInfoLookup1,
                    //查詢條件
                    Aggregation.match(criteria),
                    //最后查詢結(jié)果集顯示字段
                    Aggregation.project("pmLineCode", "prodItemCode", "prodItemName", "performance", "growthRate", "monthPerformance", "fullMonthPerformance", "SysProduct.productPicUrl"));

總結(jié)

到此這篇關(guān)于在Java中使用MongoDB的文章就介紹到這了,更多相關(guān)Java使用MongoDB內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • RocketMQ的順序消費(fèi)機(jī)制詳解

    RocketMQ的順序消費(fèi)機(jī)制詳解

    這篇文章主要介紹了RocketMQ的順序消費(fèi)機(jī)制詳解,順序消息是指對于一個(gè)指定的?Topic?,消息嚴(yán)格按照先進(jìn)先出(FIFO)的原則進(jìn)行消息發(fā)布和消費(fèi),即先發(fā)布的消息先消費(fèi),后發(fā)布的消息后消費(fèi),,需要的朋友可以參考下
    2023-10-10
  • 淺析SpringBoot自動(dòng)裝配的實(shí)現(xiàn)

    淺析SpringBoot自動(dòng)裝配的實(shí)現(xiàn)

    springboot開箱即用,其實(shí)實(shí)現(xiàn)了自動(dòng)裝配,本文重點(diǎn)給大家介紹SpringBoot是如何做到自動(dòng)裝配的,感興趣的朋友跟隨小編一起看看吧
    2022-02-02
  • java自動(dòng)生成ID號的方法

    java自動(dòng)生成ID號的方法

    這篇文章主要介紹了java自動(dòng)生成ID號的方法,涉及java生成ID號的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • Struts2截取字符串代碼介紹

    Struts2截取字符串代碼介紹

    這篇文章主要介紹了Struts2截取字符串代碼介紹,介紹了基本的截取方法,以及截取帶html標(biāo)簽字符串的方法,需要的朋友可以了解下。
    2017-09-09
  • Java實(shí)現(xiàn)文件及文件夾的刪除

    Java實(shí)現(xiàn)文件及文件夾的刪除

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)文件及文件夾的刪除,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Java怎么獲取當(dāng)前時(shí)間、計(jì)算程序運(yùn)行時(shí)間源碼詳解(超詳細(xì)!)

    Java怎么獲取當(dāng)前時(shí)間、計(jì)算程序運(yùn)行時(shí)間源碼詳解(超詳細(xì)!)

    有的時(shí)候,我們需要查看某一段代碼的性能如何,最為簡單的方式,可以通過計(jì)算該段代碼執(zhí)行的耗時(shí),來進(jìn)行簡單的判斷,這篇文章主要給大家介紹了關(guān)于Java怎么獲取當(dāng)前時(shí)間、計(jì)算程序運(yùn)行時(shí)間的相關(guān)資料,需要的朋友可以參考下
    2024-07-07
  • SpringBoot2.6.3集成quartz的方式

    SpringBoot2.6.3集成quartz的方式

    quartz是java里頭定時(shí)任務(wù)的經(jīng)典開源實(shí)現(xiàn),這里講述一下如何在SpringBoot2.6.3集成quartz,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2022-02-02
  • MyBatis中useGenerateKeys的使用解析

    MyBatis中useGenerateKeys的使用解析

    這篇文章主要介紹了MyBatis中useGenerateKeys的使用,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 使用Java實(shí)現(xiàn)查看線程的運(yùn)行狀態(tài)(附源碼)

    使用Java實(shí)現(xiàn)查看線程的運(yùn)行狀態(tài)(附源碼)

    在現(xiàn)代 Java 應(yīng)用中,線程的運(yùn)行狀態(tài)對于排查問題和優(yōu)化性能具有至關(guān)重要的作用,本文將使用Java編寫一個(gè)查看線程運(yùn)行狀態(tài)的工具,有需要的可以了解下
    2025-03-03
  • Java國際化簡介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java國際化簡介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要為大家簡單介紹了Java國際化的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07

最新評論

大兴区| 中超| 新民市| 荃湾区| 昌邑市| 老河口市| 乌鲁木齐市| 泽库县| 固原市| 乌海市| 晋中市| 清水县| 巴林左旗| 信宜市| 庆云县| 田阳县| 林周县| 淮滨县| 黎城县| 盐源县| 徐州市| 曲水县| 红安县| 华安县| 吴忠市| 金阳县| 涿州市| 新和县| 白山市| 驻马店市| 香河县| 三原县| 德州市| 崇左市| 乌鲁木齐县| 应城市| 措美县| 法库县| 南安市| 嘉禾县| 榕江县|