环境:Springboot2。5。8 请先阅读: Reactor响应式编程(Flux、Mono)基本用法 SpringWebFlux入门实例并整合数据库实现基本的增删改查MongoDB介绍 MongoDB是由C语言编写的,是一个基于分布式文件存储的开源数据库系统。 在高负载的情况下,添加更多的节点,可以保证服务器性能。 MongoDB旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB将数据存储为一个文档,数据结构由键值(keyvalue)对组成。MongoDB文档类似于JSON对象。字段值可以包含其他文档,数组及文档数组。 特点:MongoDB是一个面向文档存储的数据库,操作起来比较简单和容易。你可以在MongoDB记录中设置任何属性的索引(如:FirstNameSameer,Address8GandhiRoad)来实现更快的排序。你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。如果负载的增加(需要更多的存储空间和更强的处理能力),它可以分布在计算机网络中的其他节点上这就是所谓的分片。Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。MongoDb使用update命令可以实现替换完成的文档(数据)或者一些指定的数据字段。Mongodb中的Mapreduce主要是用来对数据进行批量处理和聚合操作。Map和Reduce。Map函数调用emit(key,value)遍历集合中所有的记录,将key与value传给Reduce函数进行处理。Map函数和Reduce函数是使用Javascript编写的,并可以通过db。runCommand或mapreduce命令来执行MapReduce操作。GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务端执行,也可以把函数的定义存储在服务端,下次直接调用即可。WebFlux介绍 Spring框架中包含的原始web框架SpringWebMVC是专门为ServletAPI和Servlet容器构建的。反应式堆栈web框架SpringWebFlux后来在5。0版中添加。它是完全非阻塞的,支持反应流背压(由消费者控制生产者的速度),并在Netty、Undertow和Servlet3。1容器等服务器上运行。 这两个web框架都反映了它们的源模块(SpringWebMVC和SpringWebFlux)的名称,并在Spring框架中共存。每个模块都是可选的。应用程序可以使用一个或另一个模块,在某些情况下,可以同时使用这两个模块例如,带有反应式WebClient的SpringMVC控制器。依赖及配置dependencygroupIdorg。springframework。bootgroupIdspringbootstarterdatamongodbreactiveartifactIddependencydependencygroupIdorg。springframework。bootgroupIdspringbootstarterwebfluxartifactIddependency 配置文件spring:data:mongodb:uri:mongodb:localhost:27017demologging:level:〔org。springframework。data。mongodb。core〕:debug实体类RepositoryDocument(collectioncusers)publicclassUsers{主键,对应到mongodb的id字段IdprivateLprivateSprivateSprivateIprivateS}publicinterfaceUsersRepositoryextendsReactiveSortingRepositoryUsers,Long{}服务类ServicepublicclassUsersService{ResourceprivateReactiveMongoTResourceprivateUsersR保存数据publicMonoUserssave(Usersuser){returnur。save(user);}更新信息publicMonoUpdateResultupdateInfo(Usersuser){returntemplate。updateFirst(query(where(id)。is(user。getId())),update(email,user。getEmail())。set(username,user。getUsername()),Users。class);}删除数据publicMonoVoidremove(Longid){returnur。deleteAll(ur。findById(id));}模糊查询publicFluxUsersqueryUsersLike(Stringkeyword){PatternpatternPattern。compile(。keyword。34;);returntemplate。find(query(where(username)。regex(pattern)),Users。class);}查询所有数据publicFluxUsersqueryUsers(){returnur。findAll();}分页查询数据publicFluxUsersqueryPager(Integerpage,Integersize){PageablepageablePageRequest。of(page,size);QueryquerynewQuery();returntemplate。find(query。with(pageable),Users。class);}}Controller接口ResourceprivateUsersSPostMapping(save)publicMonoUserssave(RequestBodyUsersusers){returnus。save(users);}PostMapping(update)publicMonoUpdateResultupdate(RequestBodyUsersuser){returnus。updateInfo(user);}GetMapping(remove{id})publicMonoVoidremove(PathVariable(id)Longid){returnus。remove(id);}GetMapping(query)publicFluxUsersquery(){returnus。queryUsers();}GetMapping(queryLike)publicFluxUsersqueryLike(Stringkeyword){returnus。queryUsersLike(keyword);}GetMapping(queryPager)publicFluxUsersqueryPager(Integerpage,Integersize){returnus。queryPager(page,size);}Repository支持的查询语法 查询类 完毕!!! 求个关注 SpringCloud中断路器CircuitBreaker的应用 SpringCloudGateway应用详解1之谓词 SpringCloudFeign实现原理源分析 SpringCloudNacos服务动态配置 SpringCloudHystrix实现资源隔离应用 SpringCloudzuul动态网关配置 SpringCloud全链路追踪SkyWalking及整合Elasticsearch