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

2024-03-09 18:52

本文主要是介绍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 负责处理

在这里插入图片描述


这篇关于10、MongoDB -- MongoDB 的 MongoTemplate 的功能和用法介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/791634

相关文章

最好用的WPF加载动画功能

《最好用的WPF加载动画功能》当开发应用程序时,提供良好的用户体验(UX)是至关重要的,加载动画作为一种有效的沟通工具,它不仅能告知用户系统正在工作,还能够通过视觉上的吸引力来增强整体用户体验,本文给... 目录前言需求分析高级用法综合案例总结最后前言当开发应用程序时,提供良好的用户体验(UX)是至关重要

python实现自动登录12306自动抢票功能

《python实现自动登录12306自动抢票功能》随着互联网技术的发展,越来越多的人选择通过网络平台购票,特别是在中国,12306作为官方火车票预订平台,承担了巨大的访问量,对于热门线路或者节假日出行... 目录一、遇到的问题?二、改进三、进阶–展望总结一、遇到的问题?1.url-正确的表头:就是首先ur

如何评价Ubuntu 24.04 LTS? Ubuntu 24.04 LTS新功能亮点和重要变化

《如何评价Ubuntu24.04LTS?Ubuntu24.04LTS新功能亮点和重要变化》Ubuntu24.04LTS即将发布,带来一系列提升用户体验的显著功能,本文深入探讨了该版本的亮... Ubuntu 24.04 LTS,代号 Noble NumBAT,正式发布下载!如果你在使用 Ubuntu 23.

TP-LINK/水星和hasivo交换机怎么选? 三款网管交换机系统功能对比

《TP-LINK/水星和hasivo交换机怎么选?三款网管交换机系统功能对比》今天选了三款都是”8+1″的2.5G网管交换机,分别是TP-LINK水星和hasivo交换机,该怎么选呢?这些交换机功... TP-LINK、水星和hasivo这三台交换机都是”8+1″的2.5G网管交换机,我手里的China编程has

Django中使用SMTP实现邮件发送功能

《Django中使用SMTP实现邮件发送功能》在Django中使用SMTP发送邮件是一个常见的需求,通常用于发送用户注册确认邮件、密码重置邮件等,下面我们来看看如何在Django中配置S... 目录1. 配置 Django 项目以使用 SMTP2. 创建 Django 应用3. 添加应用到项目设置4. 创建

Springboot中Jackson用法详解

《Springboot中Jackson用法详解》Springboot自带默认json解析Jackson,可以在不引入其他json解析包情况下,解析json字段,下面我们就来聊聊Springboot中J... 目录前言Jackson用法将对象解析为json字符串将json解析为对象将json文件转换为json

使用 Python 和 LabelMe 实现图片验证码的自动标注功能

《使用Python和LabelMe实现图片验证码的自动标注功能》文章介绍了如何使用Python和LabelMe自动标注图片验证码,主要步骤包括图像预处理、OCR识别和生成标注文件,通过结合Pa... 目录使用 python 和 LabelMe 实现图片验证码的自动标注环境准备必备工具安装依赖实现自动标注核心

通过C#和RTSPClient实现简易音视频解码功能

《通过C#和RTSPClient实现简易音视频解码功能》在多媒体应用中,实时传输协议(RTSP)用于流媒体服务,特别是音视频监控系统,通过C#和RTSPClient库,可以轻松实现简易的音视... 目录前言正文关键特性解决方案实现步骤示例代码总结最后前言在多媒体应用中,实时传输协议(RTSP)用于流媒体服

Java操作xls替换文本或图片的功能实现

《Java操作xls替换文本或图片的功能实现》这篇文章主要给大家介绍了关于Java操作xls替换文本或图片功能实现的相关资料,文中通过示例代码讲解了文件上传、文件处理和Excel文件生成,需要的朋友可... 目录准备xls模板文件:template.xls准备需要替换的图片和数据功能实现包声明与导入类声明与

基于Qt实现系统主题感知功能

《基于Qt实现系统主题感知功能》在现代桌面应用程序开发中,系统主题感知是一项重要的功能,它使得应用程序能够根据用户的系统主题设置(如深色模式或浅色模式)自动调整其外观,Qt作为一个跨平台的C++图形用... 目录【正文开始】一、使用效果二、系统主题感知助手类(SystemThemeHelper)三、实现细节