目录
- 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 负责处理