欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在Java中使用MongoDB的方法詳解

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

一、mongoDB簡介

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

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

類似于

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

3. 使用場景:

1、應用不需要事務;

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

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

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

二、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

當然也可以自己封裝一個工具類

 @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é)果的別名
    //如果需要多連表就在寫一個
    //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(
                    //連表條件
                    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)文章

  • Maven導入Junit4后在test中無法引用問題

    Maven導入Junit4后在test中無法引用問題

    在使用Maven進行項目管理時,可能會遇到導入依賴和打開項目結(jié)構(gòu)的問題,本文通過實際經(jīng)驗,提供了一些解決方法和技巧,希望能幫助遇到相同問題的開發(fā)者,此外,還鼓勵大家多多支持和分享個人經(jīng)驗,以便于共同進步
    2024-10-10
  • SpringBoot獲取application.properties文件中文亂碼問題及解決

    SpringBoot獲取application.properties文件中文亂碼問題及解決

    這篇文章主要介紹了SpringBoot獲取application.properties文件中文亂碼問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Java實現(xiàn)圖像分割功能

    Java實現(xiàn)圖像分割功能

    這篇文章主要為大家詳細介紹了Java實現(xiàn)圖像分割功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • SpringBoot2整合ElasticJob框架過程詳解

    SpringBoot2整合ElasticJob框架過程詳解

    這篇文章主要介紹了SpringBoot2整合ElasticJob框架過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • 使用Kubernetes和Docker部署Java微服務詳細代碼

    使用Kubernetes和Docker部署Java微服務詳細代碼

    Java微服務項目是一種基于Java技術(shù)棧的分布式系統(tǒng)開發(fā)方式,下面這篇文章主要給大家介紹了關(guān)于使用Kubernetes和Docker部署Java微服務的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-07-07
  • Java中的ThreadPoolExecutor線程池原理細節(jié)解析

    Java中的ThreadPoolExecutor線程池原理細節(jié)解析

    這篇文章主要介紹了Java中的ThreadPoolExecutor線程池原理細節(jié)解析,ThreadPoolExecutor是一個線程池,最多可使用7個參數(shù)來控制線程池的生成,使用線程池可以避免創(chuàng)建和銷毀線程的資源損耗,提高響應速度,并且可以管理線程池中線程的數(shù)量和狀態(tài)等等,需要的朋友可以參考下
    2023-12-12
  • SpringBoot結(jié)合Tess4J實現(xiàn)拍圖識字的示例代碼

    SpringBoot結(jié)合Tess4J實現(xiàn)拍圖識字的示例代碼

    圖片中的文字提取已經(jīng)越來越多地應用于數(shù)據(jù)輸入和自動化處理過程,本文主要介紹了SpringBoot結(jié)合Tess4J實現(xiàn)拍圖識字的示例代碼,具有一定的參考價值,感興趣的可以了解一下
    2024-06-06
  • java中封裝JDBC工具類的實例分析

    java中封裝JDBC工具類的實例分析

    在本篇內(nèi)容里小編給各位分享了一篇關(guān)于java中封裝JDBC工具類的實例分析,對此有興趣的朋友們可以學習下。
    2021-03-03
  • mybatis自動掃描和自定義類注解方式

    mybatis自動掃描和自定義類注解方式

    這篇文章主要介紹了mybatis自動掃描和自定義類注解方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 基于Scala和Java方法的相互調(diào)用

    基于Scala和Java方法的相互調(diào)用

    這篇文章主要介紹了Scala和Java方法的相互調(diào)用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11

最新評論