在Java中使用MongoDB的方法详解

 更新时间:2023年12月20日 08:32:08   作者:Ifnew  
这篇文章主要给大家介绍了关于在Java中使用MongoDB的相关资料,要操作MongoDB数据库你需要使用MongoDB的Java驱动程序,文中通过代码介绍的非常详细,需要的朋友可以参考下

一、mongoDB简介

MongoDB 是由 C++ 语言编写的,基于分布式文件存储的数据库,是一个介于关系数据库和非关系数据库之间的产品,是最接近于关系型数据库的 NoSQL 数据库。
MongoDB 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于JSON对象。字段值可以包含其他文档,数组及文档数组

类似于

2. MongoDB优点:数据处理能力强,内存级数据库,查询速度快,扩展性强,只是不支持事务。

3. 使用场景:

1、应用不需要事务;

2、数据模型无法确定,经常发生变更;

3、应用存储的数据很大达到TB级别以上;

4、应用需要大量的地理位置查询简单的来说就是数据量比较大,而且主要是查询操作,而且不需要事务支持

二、MongoDB与Mysql的区别

三、使用

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>

配置连接参数

    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.主表的关联字段
                    foreignField("productCode").//3.副表的关联字段
                    as("SysProduct");//4.建议和1一致,结果的别名
    //如果需要多连表就在写一个
    //LookupOperation cusAndInfoLookup1 = LookupOperation.newLookup().
    //                from("SysProduct").//1.副表表名字
    //               localField("prodItemCode").//2.主表的关联字段
    //              foreignField("productCode").//3.副表的关联字段
    //                as("SysProduct");//4.建议和1一致,结果的别名
            //多表的关联条件,查询条件均传入到此
    //创建查询条件
    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());
            }
      //多表的关联条件,查询条件均传入到此
            Aggregation aggregation = Aggregation.newAggregation(
                    //连表条件
                    cusAndInfoLookup,
                    //cusAndInfoLookup1,
                    //查询条件
                    Aggregation.match(criteria),
                    //最后查询结果集显示字段
                    Aggregation.project("pmLineCode", "prodItemCode", "prodItemName", "performance", "growthRate", "monthPerformance", "fullMonthPerformance", "SysProduct.productPicUrl"));

总结

到此这篇关于在Java中使用MongoDB的文章就介绍到这了,更多相关Java使用MongoDB内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Springboot分页插件使用实例解析

    Springboot分页插件使用实例解析

    这篇文章主要介绍了Springboot分页插件使用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • spring kafka框架中@KafkaListener 注解解读和使用案例

    spring kafka框架中@KafkaListener 注解解读和使用案例

    Kafka 目前主要作为一个分布式的发布订阅式的消息系统使用,也是目前最流行的消息队列系统之一,这篇文章主要介绍了kafka @KafkaListener 注解解读,需要的朋友可以参考下
    2023-02-02
  • 浅谈JAVA如何生成UUID唯一标识

    浅谈JAVA如何生成UUID唯一标识

    这篇文章主要介绍了浅谈JAVA如何生成UUID唯一标识,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Java中SpringBoot的@Transactional原理

    Java中SpringBoot的@Transactional原理

    这篇文章主要介绍了Java中SpringBoot的@Transactional原理,面向元数据遍历已经成为越来越多开发者的偏好,因此原理从Springboot的EnableTransactionManagement注解说起,需要的朋友可以参考下
    2023-07-07
  • JDBC连接Mysql的5种方式实例总结

    JDBC连接Mysql的5种方式实例总结

    JDBC是Java DataBase Connectivity技术的简称,是一种可用于执行 SQL语句的Java API,下面这篇文章主要给大家介绍了关于JDBC连接Mysql的5种方式,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • java JSP开发之Spring中Bean的使用

    java JSP开发之Spring中Bean的使用

    这篇文章主要介绍了java JSP开发之Spring中Bean的使用的相关资料,在Spring中,bean的生命周期就比较复杂,这里就详细介绍下,需要的朋友可以参考下
    2017-08-08
  • SpringBoot集成Redis实现验证码的简单案例

    SpringBoot集成Redis实现验证码的简单案例

    本文主要介绍了SpringBoot集成Redis实现验证码的简单案例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • springmvc参数为对象,数组的操作

    springmvc参数为对象,数组的操作

    这篇文章主要介绍了springmvc参数为对象,数组的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • SSH框架网上商城项目第13战之Struts2文件上传功能

    SSH框架网上商城项目第13战之Struts2文件上传功能

    这篇文章主要为大家详细介绍了SSH框架网上商城项目第13战之Struts2文件上传功能的相关资料,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • 浅析Java中为什么要设计包装类

    浅析Java中为什么要设计包装类

    我们知道Java是一个面相对象的编程语言,基本类型并不具有对象的性质,为了让基本类型也具有对象的特征,就出现了包装类型,它相当于将基本类型“包装起来”,使得它具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作
    2021-06-06

最新评论