10、MongoDB -- MongoDB 的 MongoTemplate 的功能和用法介绍

目录

  • MongoTemplate 的功能和用法
    • 演示前提:
      • 登录单机模式的 mongodb 服务器命令
      • 登录【test】数据库的 mongodb 客户端命令
      • 登录【admin】数据库的 mongodb 客户端命令
    • 为 MongoDB 提供的两个 Starter
      • spring-boot-starter-data-mongodb(为以同步方式操作 MongoDB 提供的 Starter )
      • spring-boot-starter-data-mongodb-reactive(反应式 Starter )
    • MongoClient ——负责去连接 MongoDB 数据库。
      • MongoDB官网查看 MongoClient 驱动API 文档的详细步骤
    • MongoTemplate 的方法
      • 常用方法:
      • 高级用法:
    • 代码演示
      • 创建项目
      • 配置 MongoDB 连接
        • 方式一:
        • 方式二:用这个


MongoTemplate 的功能和用法


演示前提:


登录单机模式的 mongodb 服务器命令

mongod.exe --config "E:\install\mongodb\mongodb-4.2.25\mongod.conf"

在这里插入图片描述


登录【test】数据库的 mongodb 客户端命令

mongo mongodb://192.168.0.107:27017/test -u LJHAAA -p 123456

在这里插入图片描述


登录【admin】数据库的 mongodb 客户端命令

mongo mongodb://192.168.0.107:27017/admin -u admin -p 123456

在这里插入图片描述



为 MongoDB 提供的两个 Starter

spring-boot-starter-data-mongodb:连接 MongoDB 传统 API 的 Starter。

spring-boot-starter-data-mongodb-reactive:连接 MongoDB 反应式 API 的 Starter。

这两个Starter分别依赖于不同的驱动。

MongoDb 为不同的 API ( 同步 和 反应式 )都提供了对应(不同)的驱动。


spring-boot-starter-data-mongodb(为以同步方式操作 MongoDB 提供的 Starter )

添加该Starter后,Spring Boot 将会在容器中自动配置 MongoDatabaseFactory 和 MongoTemplate。

如果在容器中配置自己的 com.mongodb.client.MongoClient,Spring Boot 就会用它配置 MongoDatabaseFactory

——MongoDatabaseFactory 需要依赖 MongoClient。


spring-boot-starter-data-mongodb-reactive(反应式 Starter )

添加该 Starter 后,Spring Boot 将会在容器中自动配置 ReactiveMongoDatabaseFactory 和 ReactiveMongoTemplate 。

如果在容器中配置自己的 com.mongodb.reactivestreams.client.MongoClient(与前面MongoClient不是同一个),
Spring Boot 就会用它配置 ReactiveMongoDatabaseFactory。


MongoClient ——负责去连接 MongoDB 数据库。

MongoDB 为同步和反应式两种编程模式,都提供了对应的驱动。

MongoClient 是属于 MongoDB 官方提供的驱动 API,它不是 Spring Boot、Spring Data MongoDB 所提供的。

MongoClient有两个版本,分别是同步版本和反应式版本,两个不同版本的 MongoClient 分别位于不同包下。
——它们位于不同的驱动包

【MongoClient 是连接 MongoDB 的核心API】,调用它的 getDatabase?(String name) 方法即可得到指定数据库对应的 MongoDatabase,

这个 API 就相当于 MongoDB 客户端中的 “db” 对象,

因此接下来即可通过 MongoDatabase 的方法来操作该数据库,例如操作 Collection。

若要对自动配置的 MongoDatabaseFactory 或 ReactiveMongoDatabaseFactory 进行定制,

只要配置自己的 MongoClient 即可,MongoClient 负责连接 MongoDB 的实际工作,

而 MongoDatabaseFactory 或 ReactiveMongoDatabaseFactory 只是一层包装。


MongoDB官网查看 MongoClient 驱动API 文档的详细步骤

MongoDB官网查看 MongoClient 驱动API 文档的详细步骤

查看这个API文档

在这里插入图片描述


MongoTemplate 的方法

常用方法:

MongoTemplate 或 ReactiveMongoTemplate(返回Mono或Flux)提供了如下常用方法:

- insert(T objectToSave):保存数据对象,对应于插入一个文档。- remove(Object object):删除数据对象,对应于删除一个文档。- remove(Query query, Class<?> entityClass):从指定集合(由数据类映射)中删除所有符合条件的文档。- updateFirst(Query query, UpdateDefinition update, Class<?> entityClass):更新指定集合(由数据类映射)中符合条件的第一条记录。- updateMulti(Query query, UpdateDefinition update, Class<?> entityClass):更新指定集合(由数据类映射)中符合条件的所有记录。- find(Query query, Class<T> entityClass):从指定集合(由数据类映射)中查找所有符合条件的记录。

Spring官网中查看MongoDB的API文档的详细步骤

Class MongoTemplate

在这里插入图片描述

高级用法:

从用法角度来看,MongoTemplate 提供的方法,ReactiveMongoTemplate 同样也会提供,

区别只是 MongoTemplate 的方法返回同步的结果,如 List 等;
而 ReactiveMongoTemplate 的方法返回反应式的结果:如 Flux 或 Mono。


更高级的用法:MongoTemplate 或 ReactiveMongoTemplate 提供了系列 execute() 方法,
这些方法都需要传入一个 Lambda 形式(或匿名内部类形式)的 Callback 对象,

开发者在实现 Callback 接口中抽象方法时,可访问到 MongoDatabase(相当于命令行中的db)、
MongoCollection 等底层 API,从而直接使用 MongoDatabase、MongoCollection 等底层 API 来操作 MongoDB 。

MongoDatabase、MongoCollection 都属于 MongoDB 驱动所提供的原生API。

在这里插入图片描述

Class ReactiveMongoTemplate

在这里插入图片描述

代码演示

创建项目

勾选上同步和反应式的依赖

在这里插入图片描述

配置 MongoDB 连接

方式一:

Spring Boot 自动连接URL为 “mongodb://localhost/test” 的 MongoDB 服务器。
也可通过 spring.data.mongodb.uri 属性改变 MongoDB 服务器的 URL ,
例如通过如下属性指定 MongoDB 副本集的 URL :

   spring.data.mongodb.uri=mongodb://user:pass@host1:12345,host2:23456/boot

上面配置指定了两个副本:位于host1:12345 的副本和位于 host2:23456的副本。

一旦指定了 spring.data.mongodb.uri,那就无需指定 host, port, credentials,replica属性。

简单来说,uri 相当于是指定连接 MongoDB 的快捷方式。


查看 MongoProperties 这个属性配置类

在这里插入图片描述


方式二:用这个

也可通过如下方式配置 MongoDB 服务器的地址:

spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=test
spring.data.mongodb.username=LJHAAA
spring.data.mongodb.password=123456

所有 spring.data.mongodb.* 开头的属性都由 MongoProperties 负责处理

在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/525117.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年如何批量下载知乎回答和知乎文章导出pdf?

如何批量下载知乎回答和知乎文章导出pdf&#xff1f;用scraper浏览器扩展 2024 年开发的第一个脚本神器 下载的所有回答html内容&#xff0c;文件名为回答日期加标题。 接着批量将html转换pdf&#xff0c;效果如图&#xff1a; 再将所有pdf合成一个pdf文件&#xff1a; 每个回…

SQL盲注-实战布尔盲注

环境&#xff1a;win10 靶场&#xff1a;sqli-labs-master 本实验仅供学习参考&#xff01;&#xff01;&#xff01; 1 布尔盲注 盲注就是在 SQL 注入过程中&#xff0c; SQL 语句执行后&#xff0c;查询到的数据不能 回显到前端页面。此时&#xff0c;我们需要利用一些方…

如何进入Windows 11的安全模式?这里提供详细步骤

序言 如果你在启动Windows 11 PC时遇到问题,则重新启动到安全模式可能会有所帮助,该模式会暂时禁用驱动程序和功能,以使你的PC更稳定。下面是如何做到这一点。 在Windows 7和更早版本中,通常可以在打开电脑后按功能键(如F8)启动安全模式。Microsoft从Windows 8中删除了…

k8s-生产级的k8s高可用(2) 25

部署containerd k8s2、k8s3、k8s4在配置前需要重置节点&#xff08;reset&#xff09;在上一章已完成 禁用所有节点docker和cri-docker服务 所有节点清除iptables规则 重置后全部节点重启 由于之前部署过docker&#xff0c;因此containerd默认已安装 修改配置 启动containe…

测试开发工程必备技能之一:Mock的使用

1. 背景 在实际产品开发过程中&#xff0c;某个服务或前端依赖一个服务接口&#xff0c;该接口可能依赖多个底层服务或模块&#xff0c;或第三方接口&#xff0c;比如说服务 A 依赖服务B&#xff0c;服务B又依赖服务 C 这种依赖的问题会导致原本的需求目的是要验证服务A&…

数学建模-动态规划(美赛运用)

动态规划模型的要素是对问题解决的抽象&#xff0c;其可分为&#xff1a; 阶段。指对问题进行解决的自然划分。例如&#xff1a;在最短线路问题中&#xff0c;每进行走一步的决策就是一个阶段。 状态。指一个阶段开始时的自然状况。例如&#xff1a;在最短线路问题中&#xff…

C++字符串操作【超详细】

零.前言 本文将重点围绕C的字符串来展开描述。 其中&#xff0c;对于C/C中字符串的一些区别也做出了回答&#xff0c;并对于C的&#xff08;string库&#xff09;进行了讲解&#xff0c;最后我们给出字符串的不同表达形式。 开发环境&#xff1a; VS2022 一.字符串常量跟字…

Qt Creator常见问题解决方法

Qt Creator源文件重命名的正确方法 光改文件名是不够的&#xff0c;还要在.pro文件中的SOURCES中把名字改成之后的。 中文乱码&#xff08;字符集设置&#xff09; 菜单栏-工具-选项-设置为utf-8

使用R语言进行聚类分析

一、样本数据描述 城镇居民人均消费支出水平包括食品、衣着、居住、生活用品及服务、通信、文教娱乐、医疗保健和其他用品及服务支出这八项指标来描述。表中列出了2016年我国分地区的城镇居民的人均消费支出的原始数据&#xff0c;数据来源于2017年的《中国统计年鉴》&#xf…

试题 算法训练 强力党逗志芃

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 逗志芃励志要成为强力党&#xff0c;所以他将身上所以的技能点都洗掉了重新学技能。现在我们可以了解到&#xff0c;每个技能…

【C++专栏】C++入门 | 函数重载、引用、内联函数

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;C专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ C入门 | 函数重载、引用、内联函数 文章编号&#xff1a;C入门 / 02 文…

appium2的一些配置

appium-desktop不再维护之后&#xff0c;需要使用appium2。 1、安装appium2 命令行输入npm i -g appium。安装之后输入appium或者appium-server即可启动appium 2、安装安卓/ios的驱动 安卓&#xff1a;appium driver install uiautomator2 iOS&#xff1a;appium driver i…