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

相关文章
|
算法 安全 Linux
SSH学习(二)- SSH-TRANS相关
重点学习SSH Transport Layer相关的密码学内容。
1239 0
SSH学习(二)- SSH-TRANS相关
|
Android开发
Android调用相机与相册的方法1
Android调用相机与相册的方法
477 0
|
8月前
|
机器学习/深度学习 存储 自然语言处理
大模型基础概念术语解释
大语言模型(LLM)基于Transformer架构,通过海量文本训练,具备强大语言理解与生成能力。其核心组件包括注意力机制、位置编码与嵌入层,支持文本分割为Token进行处理。参数量达亿级以上,规模增长带来涌现能力,如复杂推理与跨任务泛化。混合专家模型(MoE)提升效率,推动模型持续扩展。
|
4月前
|
数据采集 人工智能 自然语言处理
人机共享技能库为基础的可控本地安全助理平台
**摘要:** 即使零token也能手机多平台联动电脑运行脚本自由安全地运行各种技能工具脚本,通过"自行预设"的关键词来触发运行脚本的方法达到绝对安全、高效、和自由完全掌控平台的碾压核心优势!打造十分适合机关单位、内网环境、私有部署场景的安全助理,选择不走云端ai通道!当然也可以自由选择本地部署的人工智能ai,即使没有ai照样能跑!比沙箱模式更加安全高效和极其节省成本的终极理想设定! **关键词:** 本地化助手;人机协作;技能共享;隐私计算;自动化办公
 人机共享技能库为基础的可控本地安全助理平台
|
4月前
|
机器学习/深度学习 人工智能 架构师
Skill技术正在吃掉传统自动化框架的最后一块领地
本文深度解析AI测试范式革命:传统自动化脚本正被“Skill”技术重构。Skill非代码而是可复用的测试方法论;Agent、MCP、Skill三层协同,实现从“写脚本”到“搭能力”的跃迁。Cursor、Money Forward、OpenClaw等案例印证:测试工程师正升级为AI时代的Skill架构师。
|
4月前
|
运维 Kubernetes 监控
Kubernetes Pod 重启之谜:何时重启?何时静默?
配置更新后Pod无反应?真相是:kubelet只监听Pod Spec变更,ConfigMap/Secret内容变化不会触发重启。环境变量注入不可热更,卷挂载需应用主动监听;UID变=重建,UID不变+重启计数增=容器重启。精准判断,避免误操作。(239字)
320 1
|
8月前
|
XML 算法 安全
详解RAG五种分块策略,技术原理、优劣对比与场景选型之道
RAG通过检索与生成结合,提升大模型在企业场景的准确性与安全性。分块策略是其核心,直接影响检索效果与生成质量。本文系统解析五种主流分块方法:固定大小、语义、递归、基于文档结构及LLM分块,对比其优缺点与适用场景,并探讨RAG在金融、医疗等高风险领域的可验证性挑战与前沿优化路径。
|
8月前
|
消息中间件 人工智能 Linux
基于 RocketMQ 构建 高可靠 A2A 通信通道
A2A协议由Google于2025年发起,旨在实现跨厂商AI智能体的标准化通信。基于RocketMQ构建的异步通信方案,支持任务分发、流式交互与状态同步,助力高效、可靠的多智能体协同系统落地,现已开源。
|
8月前
|
机器学习/深度学习 数据采集 人工智能
大模型训练方法与技术术语解释
预训练、微调、RLHF、思维链等技术共同推动大模型发展。预训练构建语言基础,微调适配特定任务,RLHF融入人类偏好,思维链提升推理能力,少样本与零样本实现快速迁移,指令微调增强指令理解,自监督学习利用海量无标数据,温度控制生成风格,蒸馏压缩模型规模,缩放定律指导模型扩展,全面提升大模型理解、生成与泛化能力。
|
8月前
|
Linux 数据安全/隐私保护 虚拟化
虚拟机安装(CentOS7)
准备CentOS7镜像及VMware Workstation虚拟机工具,可从百度云下载(提取码:h1y9/bkz3)。使用VMware创建虚拟机,参考知乎教程完成安装。默认登录用户为root,密码由用户自定义设置。需准备一台具备运行虚拟机条件的电脑。