MongoDB简介

MongoDB是一个基于分布式文件存储的数据库,它是一个介于关系数据库和非关系数据库之间的产品,其主要目标是在键/值存储方式(提供了高性能和高度伸缩性)和传统的RDBMS系统(具有丰富的功能)之间架起一座桥梁,它集两者的优势于一身。

MongoDB支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型,也因为他的存储格式也使得它所存储的数据在Nodejs程序应用中使用非常流畅。

既然称为NoSQL数据库,Mongo的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

但是,MongoDB也不是万能的,同MySQL等关系型数据库相比,它们在针对不同的数据类型和事务要求上都存在自己独特的优势。在数据存储的选择中,坚持多样化原则,选择更好更经济的方式,而不是自上而下的统一化。

较常见的,我们可以直接用MongoDB来存储键值对类型的数据,如:验证码、Session等;由于MongoDB的横向扩展能力,也可以用来存储数据规模会在未来变的非常巨大的数据,如:日志、评论等;由于MongoDB存储数据的弱类型,也可以用来存储一些多变json数据,如:与外系统交互时经常变化的JSON报文。而对于一些对数据有复杂的高事务性要求的操作,如:账户交易等就不适合使用MongoDB来存储。

MongoDB官网

访问MongoDB

在Spring Boot中,对如此受欢迎的MongoDB,同样提供了自配置功能。

引入依赖

Spring Boot中可以通过在pom.xml中加入spring-boot-starter-data-mongodb引入对mongodb的访问支持依赖。它的实现依赖spring-data-mongodb。是的,您没有看错,又是spring-data的子项目,之前介绍过spring-data-jpaspring-data-redis,对于mongodb的访问,spring-data也提供了强大的支持,下面就开始动手试试吧。

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

快速开始使用Spring-data-mongodb

若MongoDB的安装配置采用默认端口,那么在自动配置的情况下,我们不需要做任何参数配置,就能马上连接上本地的MongoDB。下面直接使用spring-data-mongodb来尝试对mongodb的存取操作。(记得mongod启动您的mongodb)

  • 创建要存储的User实体,包含属性:id、username、age

public class User {@Idprivate Long id;private String username;private Integer age;public User(Long id, String username, Integer age) {this.id = id;this.username = username;this.age = age;}// 省略getter和setter}
  • 实现User的数据访问对象:UserRepository

public interface UserRepository extends MongoRepository<User, Long> {User findByUsername(String username);}
  • 在单元测试中调用

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(Application.class)
public class ApplicationTests {@Autowiredprivate UserRepository userRepository;@Beforepublic void setUp() {userRepository.deleteAll();}@Testpublic void test() throws Exception {// 创建三个User,并验证User总数userRepository.save(new User(1L, "didi", 30));userRepository.save(new User(2L, "mama", 40));userRepository.save(new User(3L, "kaka", 50));Assert.assertEquals(3, userRepository.findAll().size());// 删除一个User,再验证User总数User u = userRepository.findOne(1L);userRepository.delete(u);Assert.assertEquals(2, userRepository.findAll().size());// 删除一个User,再验证User总数u = userRepository.findByUsername("mama");userRepository.delete(u);Assert.assertEquals(1, userRepository.findAll().size());}}

参数配置

通过上面的例子,我们可以轻而易举的对MongoDB进行访问,但是实战中,应用服务器与MongoDB通常不会部署于同一台设备之上,这样就无法使用自动化的本地配置来进行使用。这个时候,我们也可以方便的配置来完成支持,只需要在application.properties中加入mongodb服务端的相关配置,具体示例如下:

spring.data.mongodb.uri=mongodb://name:pass@localhost:27017/test

在尝试此配置时,记得在mongo中对test库创建具备读写权限的用户(用户名为name,密码为pass),不同版本的用户创建语句不同,注意查看文档做好准备工作

若使用mongodb 2.x,也可以通过如下参数配置,该方式不支持mongodb 3.x。

spring.data.mongodb.host=localhost spring.data.mongodb.port=27017

Spring Boot

Spring Boot中使用MongoDB数据库相关推荐

  1. spring mysql mongdb_Spring Boot中使用MongoDB数据库的方法

    MongoDB数据库简介 简介 MongoDB是一个高性能,开源,无模式的,基于分布式文件存储的文档型数据库,由C++语言编写,其名称来源取自"humongous",是一种开源的文 ...

  2. Spring Boot 中使用 MongoDB 增删改查

    本文快速入门,MongoDB 结合SpringBoot starter-data-mongodb 进行增删改查 1.什么是MongoDB ? MongoDB 是由C++语言编写的,是一个基于分布式文件 ...

  3. Spring Boot中使用MongoDB,使用 Repository以及使用MongoTemplate

    文章目录 Spring Boot中使用MongoDB MongoDB Repository使用实例 导入依赖 配置MongoDB 定义Model 定义Repository 进行使用 MongoTemp ...

  4. Spring Boot中使用PostgreSQL数据库

    在如今的关系型数据库中,有两个开源产品是你必须知道的.其中一个是MySQL,相信关注我的小伙伴们一定都不陌生,因为之前的Spring Boot关于关系型数据库的所有例子都是对MySQL来介绍的.而今天 ...

  5. Spring Boot中使用时序数据库InfluxDB

    除了最常用的关系数据库和缓存之外,之前我们已经介绍了在Spring Boot中如何配置和使用MongoDB.LDAP这些存储的案例.接下来,我们继续介绍另一种特殊的数据库:时序数据库InfluxDB在 ...

  6. Spring Boot中使用Redis数据库

    Spring Boot中除了对常用的关系型数据库提供了优秀的自动化支持之外,对于很多NoSQL数据库一样提供了自动化配置的支持,包括:Redis, MongoDB, Elasticsearch, So ...

  7. mongodb 事务_Spring Boot中使用MongoDB数据库

    MongoDB简介 MongoDB是一个基于分布式文件存储的数据库,它是一个介于关系数据库和非关系数据库之间的产品,其主要目标是在键/值存储方式(提供了高性能和高度伸缩性)和传统的RDBMS系统(具有 ...

  8. Spring Boot中使用MongoDB的连接池配置

    因为今天开发遇到了性能问题,可能与MongoDB的连接有关,所以稍稍深入看了一下,正好搜到原来有人写过这篇相关的内容,所以转载过来.回头有时间可以写个扩展到SpringForAll里,主体思路还是一样 ...

  9. Spring Boot中声明式数据库事务使用与理解

    JDBC的数据库事务 传统JDBC的数据库事务的一个示例如下代码所示,该示例仅为一个insertUser方法的数据库事务过程.可以看到,如果还存在很多其他的数据库事务需要,则需要编写很多类似于如下的代 ...

最新文章

  1. 百度地图API之MyLocationOverlay的使用(Android)
  2. optee对std smc的处理的详解
  3. SAP中ABAP格式与JSON格式互转方法研究
  4. 视图view的生命周期的一点见解
  5. ogg批量配置_Macos上一款批量文件重命名工具A Better Finder Rename 11
  6. 计算机视觉知识基础_我见你:计算机视觉基础知识
  7. Hive ETL 优化(参数篇)
  8. 杭州登山地图是谁开发的_好天气继续,重阳节登高,五条杭州登山线路奉上
  9. 甜蜜暴击,情人节插画素材,甜而不腻!
  10. 关于阿里云服务器Linux安装Tomcat后,外网不能访问解决方案
  11. 软件开发项目管理经验总结
  12. 全国各省 省会城市经纬度汇总
  13. 中移动入侵防御设备集采,总限价1.6亿;爱立信斩获95个5G商用合同
  14. springboot上传图片
  15. 蛋白质二级、三级结构预测
  16. 成都启英泰伦科技有限公司
  17. android百度导航demo,Android - 百度导航Demo,我们一起来踩坑!
  18. 5年随访显示TNF拮抗剂治疗银屑病关节疗效持久
  19. 进化计算原理和实现(遗传算法)
  20. dlink平台上面flink-connect-kudu开发

热门文章

  1. Hasor JDBC 的难关,嵌套事务处理思路
  2. 将jar文件转换成exe可执行文件
  3. [WPF]WPF中材质制作——图片和矢量图之争
  4. matlab画二维颜色深浅,MATLAB scatter 画二维/三维散点图时 用颜色表示数值大小 colorbar
  5. 基于fabric框架区块链实现科学数据出版系统
  6. H264编码之GOP含义
  7. 值得推荐的C/C++框架和库(转载)
  8. 论文笔记:KD-Net
  9. 数字图像处理实验(10):PROJECT 05-01 [Multiple Uses],Noise Generators
  10. Retrofit+RxJava