当前位置: 首页 > news >正文

SpringBoot开发——整合Spring Data MongoDB

文章目录

  • 一、MongoDB简介
    • 1、MongoDB是什么
    • 2、MongoDB 基本概念
      • (1)文档
      • (2)集合
      • (3)数据库
    • 3、MongoDB的系统数据库
    • 4、MongoDB数据模型
  • 二、SpringBoot整合Spring Data MongoDB
    • 1、创建项目,添加Spring Data MongoDB依赖
    • 2、创建实体类Student
    • 3、创建StudentRepository接口
    • 4、创建Controller
    • 5、配置application.yml
    • 6、整合完成

一、MongoDB简介

1、MongoDB是什么

MongoDB 是一个基于分布式文件存储的数据库。由 C ++语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 json 的 bson 格式,因此可以存储比较复杂的数据类型。 Mongo 最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

2、MongoDB 基本概念

(1)文档

文档是 MongoDB 中数据的基本单位,类似于关系数据库中的行(但是比行复杂)。多个键及其关联的值有序地放在一起就构成了文档。
不同的编程语言对文档的表示方法不同,在JavaScript 中文档表示为:
{" greeting “:” hello , world "}
这个文档只有一个键"greeting ",对应的值为
" hello , world “。多数情况下,文档比这个更复杂,它包含多个键/值对。例如:
{” greeting “:” hello , world “,” foo “:3}
文档中的键/值对是有序的,下面的文档与上面的文档是完全不同的两个文档。
{” foo “:3,” greeting “:” hello , world "}
文档中的值不仅可以是双引号中的字符串,也可以是其他的数据类型,例如,整型、布尔型等,也可以是另外一个文档,即文档可以嵌套。文档中的键类型只能是字符串。

(2)集合

集合就是一组文档,类似于关系数据库中的表。集合是无模式的,集合中的文档可以是各式各样的。例如,{" hello , word “:” Mike “}和
{” foo ":3},它们的键不同,值的类型也不同,但是它们可以存放在同一个集合中,也就是不同模式的文档都可以放在同一个集合中。既然集合中可以存放任何类型的文档,那么为什么还需要使用多个集合?这是因为所有文档都放在同一个集合中,无论对于开发者还是管理员,都很难对集合进行管理,而且这种情形下,对集合的查询等操作效率都不高。所以在实际使用中,往往将文档分类存放在不同的集合中,例如,对于网站的日志记录,可以根据日志的级别进行存储, Info 级别日志存放在 Info 集合中, Debug 级别日志存放在 Debug 集合中,这样既方便了管理,也提供了查询性能。但是需要注意的是,这种对文档进行划分来分别存储并不是 MongoDB 的强制要求,用户可以灵活选择。
可以使用"."按照命名空间将集合划分为子集合。例如,对于一个博客系统,可能包括blog . user 和 blog . article 两个子集合,这样划分只是让组织结构更好些, blog 集合和blog . user 、 blog . article 没有任何关系。虽然子集合没有任何特殊的地方,但是使用子集合组织数据结构清晰,这也是 MongoDB 推荐的方法。

(3)数据库

MongoDB 中多个文档组成集合,多个集合组成数据库。一个 MongoDB 实例可以承载多个数据库。它们之间可以看作相互独立,每个数据库都有独立的权限控制。在磁盘上,不同的数据库存放在不同的文中。

3、MongoDB的系统数据库

MongoDB 中存在以下系统数据库。
Admin 数据库:一个权限数据库,如果创建用户的时候将该用户添加到 admin 数据库中,那么该用户就自动继承了所有数据库的权限。
Local 数据库:这个数据库永远不会被复制,可以用来存储本地单台服务器的任意集合。
Config 数据库:当MongoDB 使用分片模式时, config 数据库在内部使用,用于保存分片的信息。

4、MongoDB数据模型

一个 MongoDB 实例可以包含一组数据库,一个DataBase 可以包含一组 Collection (集合),一个集合可以包含一组 Document (文档)。一个 Document 包含一组 field (字段),每一个字段都是一个 key / value pair 。
key :必须为字符串类型。
value :可以包含如下类型。
●基本类型,例如, string , int , float , timestamp , binary 等类型。
●一个 document 。
●数组类型。

二、SpringBoot整合Spring Data MongoDB

本例中,MongoDB数据格式如下:

{"_id":ObjectId("5cfdd7ce7e8642046e75f77a"),"student_age":22,"student_name":"张三","_class":"com.mongodb.entity.Student"
}

1、创建项目,添加Spring Data MongoDB依赖

创建Springboot项目,添加Spring Data MongoDB依赖
添加依赖后,pom.xml内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.3.3</version><relativePath/>
http://www.lryc.cn/news/437782.html

相关文章:

  • camouflaged object detection中的decoder最核心的作用
  • Java volatile
  • 一条sql是如何执行的详解
  • “先天项目经理圣体”丨超适合做项目经理的4种人
  • 如何从object中抽取某几个值,然后转换成数组
  • 数据结构(14)——哈希表(1)
  • K近邻算法_分类鸢尾花数据集
  • nacos和eureka的区别详解
  • AI大模型包含哪些些技术?
  • 分布式技术概览
  • 动手学习RAG: moka-ai/m3e 模型微调deepspeed与对比学习
  • Nacos rce-0day漏洞复现(nacos 2.3.2)
  • yjs04——matplotlib的使用(多个坐标图)
  • MOS管和三极管有什么区别?
  • 医院多参数空气质量监控和压差监测系统简介@卓振思众
  • [项目实战]EOS多节点部署
  • setImmediate() vs setTimeout() 在 JavaScript 中的区别
  • 【Java文件操作】文件系统操作文件内容操作
  • 关于若依flowable的安装
  • 猜数字困难版(1-10000)
  • ASPICE术语表
  • Knife4j:打造优雅的SpringBoot API文档
  • 数学建模笔记—— 多目标规划
  • 【鸿蒙HarmonyOS NEXT】页面之间相互传递参数
  • SonicWall SSL VPN曝出高危漏洞,可能导致防火墙崩溃
  • 关于SAP标准委外(带料外协)采购订单信息
  • SpringBoot整合WebSocket实现消息推送或聊天功能示例
  • 使用 QEMU 模拟器运行 FreeRTOS 实时操作系统
  • Oracle EBS中AR模块的财务流程概览
  • Minitab 的直方图结果分析解释