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

相关文章

git stash命令基本用法详解

《gitstash命令基本用法详解》gitstash是Git中一个非常有用的命令,它可以临时保存当前工作区的修改,让你可以切换到其他分支或者处理其他任务,而不需要提交这些还未完成的修改,这篇文章主要... 目录一、基本用法1. 保存当前修改(包括暂存区和工作区的内容)2. 查看保存了哪些 stash3. 恢

Python struct.unpack() 用法及常见错误详解

《Pythonstruct.unpack()用法及常见错误详解》struct.unpack()是Python中用于将二进制数据(字节序列)解析为Python数据类型的函数,通常与struct.pa... 目录一、函数语法二、格式字符串详解三、使用示例示例 1:解析整数和浮点数示例 2:解析字符串示例 3:解

java中BigDecimal里面的subtract函数介绍及实现方法

《java中BigDecimal里面的subtract函数介绍及实现方法》在Java中实现减法操作需要根据数据类型选择不同方法,主要分为数值型减法和字符串减法两种场景,本文给大家介绍java中BigD... 目录Java中BigDecimal里面的subtract函数的意思?一、数值型减法(高精度计算)1.

C++/类与对象/默认成员函数@构造函数的用法

《C++/类与对象/默认成员函数@构造函数的用法》:本文主要介绍C++/类与对象/默认成员函数@构造函数的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录名词概念默认成员函数构造函数概念函数特征显示构造函数隐式构造函数总结名词概念默认构造函数:不用传参就可以

Pytorch介绍与安装过程

《Pytorch介绍与安装过程》PyTorch因其直观的设计、卓越的灵活性以及强大的动态计算图功能,迅速在学术界和工业界获得了广泛认可,成为当前深度学习研究和开发的主流工具之一,本文给大家介绍Pyto... 目录1、Pytorch介绍1.1、核心理念1.2、核心组件与功能1.3、适用场景与优势总结1.4、优

Druid连接池实现自定义数据库密码加解密功能

《Druid连接池实现自定义数据库密码加解密功能》在现代应用开发中,数据安全是至关重要的,本文将介绍如何在​​Druid​​连接池中实现自定义的数据库密码加解密功能,有需要的小伙伴可以参考一下... 目录1. 环境准备2. 密码加密算法的选择3. 自定义 ​​DruidDataSource​​ 的密码解密3

Java实现本地缓存的常用方案介绍

《Java实现本地缓存的常用方案介绍》本地缓存的代表技术主要有HashMap,GuavaCache,Caffeine和Encahche,这篇文章主要来和大家聊聊java利用这些技术分别实现本地缓存的方... 目录本地缓存实现方式HashMapConcurrentHashMapGuava CacheCaffe

Spring Security介绍及配置实现代码

《SpringSecurity介绍及配置实现代码》SpringSecurity是一个功能强大的Java安全框架,它提供了全面的安全认证(Authentication)和授权(Authorizatio... 目录简介Spring Security配置配置实现代码简介Spring Security是一个功能强

SpringCloud使用Nacos 配置中心实现配置自动刷新功能使用

《SpringCloud使用Nacos配置中心实现配置自动刷新功能使用》SpringCloud项目中使用Nacos作为配置中心可以方便开发及运维人员随时查看配置信息,及配置共享,并且Nacos支持配... 目录前言一、Nacos中集中配置方式?二、使用步骤1.使用$Value 注解2.使用@Configur

javascript fetch 用法讲解

《javascriptfetch用法讲解》fetch是一个现代化的JavaScriptAPI,用于发送网络请求并获取资源,它是浏览器提供的全局方法,可以替代传统的XMLHttpRequest,这篇... 目录1. 基本语法1.1 语法1.2 示例:简单 GET 请求2. Response 对象3. 配置请求