当前位置: 首页 > 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/>

相关文章:

SpringBoot开发——整合Spring Data MongoDB

文章目录 一、MongoDB简介1、MongoDB是什么2、MongoDB 基本概念(1)文档(2)集合(3)数据库3、MongoDB的系统数据库4、MongoDB数据模型二、SpringBoot整合Spring Data MongoDB1、创建项目,添加Spring Data MongoDB依赖2、创建实体类Student3、创建StudentRepository接口4、创建…...

camouflaged object detection中的decoder最核心的作用

在 camouflaged object detection&#xff08;COD&#xff09;任务中&#xff0c;decoder 的确有一个核心作用是进行 上采样 以恢复图像的分辨率&#xff0c;但这并不是它唯一或最核心的作用。我们可以从更广泛的视角来看 decoder 的作用。 1. 上采样&#xff08;Upsampling&a…...

Java volatile

Volatile 作用&#xff1a;保证变量的可见性&#xff0c;有序性&#xff08;禁止指令重排序&#xff09;。不保证原子性。 如何保证可见性的&#xff1f; 场景&#xff1a;每个 线程 下都有一块 工作内存。要使用变量需要从 主内存 中把 变量 读取出来&#xff0c;使用完成后写…...

一条sql是如何执行的详解

一条sql是如何执行的详解 1. SQL 解析&#xff08;Parsing&#xff09; 2. 查询重写&#xff08;Query Rewrite&#xff09; 3. 查询规划&#xff08;Query Planning&#xff09; 4. 查询执行&#xff08;Query Execution&#xff09; 5. 结果返回 示例&#xff1a;查询执…...

“先天项目经理圣体”丨超适合做项目经理的4种人

总有人在问&#xff0c;什么样的人适合做项目经理&#xff0c;当项目经理需要什么样的特质&#xff1f; 你别说&#xff0c;还真有那么一些人是“先天项目经理圣体”&#xff0c;天生就是吃项目经理这碗饭的。 沟通达人丨靠“嘴”走天下 我们知道项目经理大部分的时间都在进行…...

如何从object中抽取某几个值,然后转换成数组

可以使用Object.entries(), Array.prototype.filter()和Array.prototype.map()或者解构赋值的方式从对象中抽取某些值并转换为数组 示例 1&#xff1a;使用 Object.entries(), filter() 和 map() const obj {a: 1,b: 2,c: 3,d: 4 };const keysToExtract [a, c];const extr…...

数据结构(14)——哈希表(1)

欢迎来到博主的专栏&#xff1a;数据结构 博主ID&#xff1a;代码小豪 文章目录 哈希表的思想映射方法&#xff08;哈希函数&#xff09;除留余数法 哈希表insert闭散列负载因子扩容find和erase 哈希表的思想 在以往的线性表中&#xff0c;查找速度取决于线性表是否有序&#…...

K近邻算法_分类鸢尾花数据集

import numpy as np import pandas as pd from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score1.数据预处理 iris load_iris() df pd.DataFrame(datairis.data, columnsiris.featur…...

nacos和eureka的区别详解

Nacos 和 Eureka 都是服务发现和注册中心的解决方案&#xff0c;但它们在功能、设计和使用场景上有所不同。以下是它们的详细区别&#xff1a; 1. 基本概念 Eureka&#xff1a;是由 Netflix 开发的服务发现工具。它主要用于 Java 微服务架构中的服务注册与发现。Eureka 通过 R…...

AI大模型包含哪些些技术?

Prompt Prompt提示是模型接收以生成响应或完成任务的初始文本输入。 我们给AI一组Prompt输入&#xff0c;用于指导模型生成响应以执行任务。这个输入可以是一个问题、一段描述、一组关键词&#xff0c;或任何其他形式的文本&#xff0c;用于引导模型产生特定内容的响应。 Tra…...

分布式技术概览

文章目录 分布式技术1. 分布式数据库&#xff08;Distributed Databases&#xff09;2. 分布式文件系统&#xff08;Distributed File Systems&#xff09;3. 分布式哈希表&#xff08;Distributed Hash Tables, DHTs&#xff09;4. 分布式缓存&#xff08;Distributed Caching…...

动手学习RAG: moka-ai/m3e 模型微调deepspeed与对比学习

动手学习RAG: 向量模型动手学习RAG: moka-ai/m3e 模型微调deepspeed与对比学习动手学习RAG&#xff1a;迟交互模型colbert微调实践 bge-m3 1. 环境准备 pip install transformers pip install open-retrievals注意安装时是pip install open-retrievals&#xff0c;但调用时只…...

Nacos rce-0day漏洞复现(nacos 2.3.2)

Nacos rce-0day漏洞复现&#xff08;nacos 2.3.2&#xff09; NACOS是 一个开源的服务发现、配置管理和服务治理平台&#xff0c;属于阿里巴巴的一款开源产品。影像版本:nacos2.3.2或2.4.0版本指纹&#xff1a;fofa&#xff1a;app“NACOS” 从 Github 官方介绍文档可以看出国…...

yjs04——matplotlib的使用(多个坐标图)

1.多个坐标图与一个图的折线对比 1.引入包&#xff1b;字体&#xff08;同&#xff09; import matplotlib.pyplot as plt import random plt.rcParams[font.family] [SimHei] plt.rcParams[axes.unicode_minus] False 2.创建幕布 2.1建立图层幕布 一个图&#xff1a;plt.fig…...

MOS管和三极管有什么区别?

MOS管是基于金属-氧化物-半导体结构的场效应晶体管&#xff0c;它的控制电压作用于氧化物层&#xff0c;通过调节栅极电势来控制源漏电流。MOS管是FET中的一种&#xff0c;现主要用增强型MOS管&#xff0c;分为PMOS和NMOS。 MOS管的三个极分别是G(栅极)&#xff0c;D(漏极)&…...

医院多参数空气质量监控和压差监测系统简介@卓振思众

在现代医院管理中&#xff0c;确保患者和医疗人员的健康与安全是首要任务。为实现这一目标&#xff0c;医院需要依赖高科技设施来维持最佳的环境条件。特别是&#xff0c;多参数空气质量监测系统和压差监测系统在这一方面发挥了不可替代的作用。【卓振思众】多参数空气质量监测…...

[项目实战]EOS多节点部署

文章总览&#xff1a;YuanDaiMa2048博客文章总览 EOS多节点部署 &#xff08;一&#xff09;环境设计&#xff08;二&#xff09;节点配置&#xff08;三&#xff09;区块信息同步&#xff08;四&#xff09;启动节点并验证同步EOS单节点的环境如何配置 &#xff08;一&#xf…...

setImmediate() vs setTimeout() 在 JavaScript 中的区别

setImmediate() vs setTimeout() 在 JavaScript 中的区别 在 JavaScript 中&#xff0c;setImmediate() 和 setTimeout() 都用于调度任务&#xff0c;但它们的工作方式不同。 JavaScript 的异步特性 JavaScript 以其非阻塞、异步行为而闻名&#xff0c;尤其是在 Node.js 环境…...

【Java文件操作】文件系统操作文件内容操作

文件系统操作 常见API 在Java中&#xff0c;File类是用于文件和目录路径名的抽象表示。以下是一些常见的方法&#xff1a; 构造方法&#xff1a; File(String pathname)&#xff1a;根据给定的路径创建一个File对象。File(String parent, String child)&#xff1a;根据父路径…...

关于若依flowable的安装

有个项目要使用工作流功能&#xff0c;在网上看了flowable的各种资料&#xff0c;最后选择用若依RuoYi-Vue-Flowable这个项目来迁移整合。 一、下载项目代码&#xff1a; 官方项目地址&#xff1a;https://gitee.com/shenzhanwang/Ruoyi-flowable/ 二、新建数据库&#xff…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分&#xff1a; 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...