MongoDB实战演练

简介: 本项目基于SpringDataMongoDB实现头条文章评论功能,涵盖增删改查、按文章ID查询及评论点赞。通过MongoTemplate优化操作效率,结合索引提升查询性能,构建高效稳定的评论微服务模块。(238字)

本项目基于SpringDataMongoDB实现头条文章评论功能,涵盖增删改查、按文章ID查询、评论点赞等需求。通过MongoTemplate优化操作效率,结合索引提升查询性能,构建高效稳定的评论微服务模块。
5.1 需求分析
某头条的文章评论业务如下:需要实现以下功能: 1)基本增删改查API 2)根据文章id查询评论 3)评论点赞5.2 表结构分析数据库:articledb5.3 技术选型5.3.1 mongodb-driver(了解) mongodb-driver是mongo官方推出的java连接mongoDB的驱动包,相当于JDBC驱动。我们通过一个入门的案例来了解mongodb-driver的基本使用。 官方驱动说明和下载:链接 ,官方驱动示例文档:链接。5.3.2 SpringDataMongoDBSpringData家族成员之一,用于操作MongoDB的持久层框架,封装了底层的mongodb-driver。 官网主页: https://projects.spring.io/spring-data-mongodb/ 5.4 文章微服务模块搭建(1)搭建项目工程article,pom.xml引入依赖:(2)创建application.yml(3)创建启动类cn.itcast.article.ArticleApplication(4)启动项目,看是否能正常启动,控制台没有错误。5.5 文章评论实体类的编写创建实体类 创建包cn.itcast.article,包下建包po用于存放实体类,创建实体类 cn.itcast.article.po.Comment说明: 索引可以大大提升查询效率,一般在查询字段上添加索引,索引的添加可以通过Mongo的命令来添加,也可以在Java的实体类中通过注解添加。 1)单字段索引注解@Indexed org.springframework.data.mongodb.core.index.Indexed.class 声明该字段需要索引,建索引可以大大的提高查询效率。 Mongo命令参考:
db.comment.createIndex({"userid":1})
2)复合索引注解@CompoundIndex org.springframework.data.mongodb.core.index.CompoundIndex.class 复合索引的声明,建复合索引可以有效地提高多字段的查询效率。 Mongo命令参考:
db.comment.createIndex({"userid":1,"nickname":-1})
5.6 文章评论的基本增删改查(1)创建数据访问接口 cn.itcast.article包下创建dao包,包下创建接口 cn.itcast.article.dao.CommentRepository(2)创建业务逻辑类 cn.itcast.article包下创建service包,包下创建类 cn.itcast.article.service.CommentService(3)新建Junit测试类,测试保存和查询所有: cn.itcast.article.service.CommentServiceTest添加结果:5.7 根据上级ID查询文章评论的分页列表(1)CommentRepository新增方法定义(2)CommentService新增方法(3)junit测试用例: cn.itcast.article.service.CommentServiceTest(4)测试 使用compass快速插入一条测试数据,数据的内容是对3号评论内容进行评论。执行测试,结果:
----总记录数:1 ----当前页数据:[Comment{id='33', content='你年轻,火力大', publishtime=null, userid='1003', nickname='凯撒大帝', createdatetime=null, likenum=null, replynum=null, state='null', parentid='3', articleid='100001'}]
5.8 MongoTemplate实现评论点赞我们看一下以下点赞的临时示例代码: CommentService 新增updateThumbup方法
以上方法虽然实现起来比较简单,但是执行效率并不高,因为我只需要将点赞数加1就可以了,没必要查询出所有字段修改后再更新所有字段。我们可以使用MongoTemplate类来实现对某列的操作。 (1)修改CommentService

相关文章
|
2月前
|
机器学习/深度学习 存储 自然语言处理
大模型基础概念术语解释
大语言模型(LLM)基于Transformer架构,通过海量文本训练,具备强大语言理解与生成能力。其核心组件包括注意力机制、位置编码与嵌入层,支持文本分割为Token进行处理。参数量达亿级以上,规模增长带来涌现能力,如复杂推理与跨任务泛化。混合专家模型(MoE)提升效率,推动模型持续扩展。
|
2月前
|
消息中间件 人工智能 决策智能
AgentScope x RocketMQ:构建多智能体应用组合
AgentScope是阿里巴巴推出的开发者友好型多智能体框架,支持模块化、可定制的智能体应用开发。通过集成RocketMQ,实现高效、可靠的Agent间通信,助力构建如“智能旅行助手”等复杂协作场景,推动多智能体生态发展。(238字)
|
2月前
|
存储 JSON NoSQL
MongoDB常用命令
本文介绍如何使用MongoDB存储文章评论数据,涵盖数据库与集合的创建、文档的增删改查、批量操作、投影查询、排序分页及更新修饰符等核心操作,帮助快速掌握MongoDB基本用法。
|
2月前
|
存储 NoSQL 关系型数据库
4-MongoDB索引知识
MongoDB索引基于B树结构,支持单字段、复合、地理空间、文本及哈希索引,有效提升查询效率,避免全表扫描,适用于等值、范围、排序与全文检索,显著优化大数据量下的查询性能。
|
2月前
|
XML Java 数据库连接
MyBatis映射关系(1-1 1-n n-n)
本文介绍MyBatis四大关联映射:一对一(属性与字段映射)、一对多(如用户含多个角色,用`<collection>`)、多对一(如博客关联作者,用`<association>`)和多对多(通过中间类实现,如用户与部门)。解决实体间复杂关系映射问题,提升数据查询效率。
|
2月前
|
SQL 缓存 Java
MyBatis
MyBatis配置优先级:方法参数 > resource/url > properties体内;支持多环境配置与事务管理(JDBC/MANAGED),XML实现一对一、一对多关联映射,分页支持逻辑与物理方式,推荐BatchExecutor批量操作,一级缓存默认开启,二级缓存需手动配置。
|
2月前
|
XML Java 数据格式
SpringBoot@Configuration使用总结
被@Configuration标注的类视为Spring配置类,等同于XML配置文件。通过@Bean注册Bean,结合AnnotationConfigApplicationContext可启动IOC容器,加载并管理Bean实例,包括配置类自身。
|
2月前
|
安全 数据安全/隐私保护 微服务
SpringSecurity权限管理
权限管理涵盖认证与授权,通过ACL、RBAC等模型实现用户身份校验与角色权限分配,构建安全访问控制,保障系统数据与流程安全。
|
2月前
|
人工智能 缓存 NoSQL
AIGC项目
专注AI与高并发架构实战,精通大模型私有化部署、RAG知识库、AIGC生成(文生图/图修复)及Stable Diffusion应用。熟练掌握Spring Cloud微服务、Redis缓存、分库分表、分布式事务与任务调度,具备统一支付、保险系统、派单调度等复杂业务系统设计开发能力。
|
2月前
|
人工智能 NoSQL Java
参考简历模板
项目名称:多领域智能微服务系统 项目描述:本系列项目覆盖教育、金融、物流、家政等领域,基于微服务架构融合大模型与AI技术,实现智能推荐、风险控制、路径优化与服务调度。集成RAG、知识图谱、MCP协议与多模态处理,提升系统智能化水平。通过Spring AI对接通义千问,结合向量库与工具调用,实现语义理解与决策自动化;利用Redis+MySQL实现会话记忆与混合存储,保障高并发下稳定性;封装通用服务为MCP标准接口,统一网关鉴权与限流,增强系统可扩展性与安全性。