MongoDB实战演练

本文涉及的产品
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
简介: 本项目基于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

相关文章
|
6月前
|
机器学习/深度学习 存储 自然语言处理
大模型基础概念术语解释
大语言模型(LLM)基于Transformer架构,通过海量文本训练,具备强大语言理解与生成能力。其核心组件包括注意力机制、位置编码与嵌入层,支持文本分割为Token进行处理。参数量达亿级以上,规模增长带来涌现能力,如复杂推理与跨任务泛化。混合专家模型(MoE)提升效率,推动模型持续扩展。
|
2月前
|
机器学习/深度学习 人工智能 架构师
Skill技术正在吃掉传统自动化框架的最后一块领地
本文深度解析AI测试范式革命:传统自动化脚本正被“Skill”技术重构。Skill非代码而是可复用的测试方法论;Agent、MCP、Skill三层协同,实现从“写脚本”到“搭能力”的跃迁。Cursor、Money Forward、OpenClaw等案例印证:测试工程师正升级为AI时代的Skill架构师。
|
2月前
|
运维 Kubernetes 监控
Kubernetes Pod 重启之谜:何时重启?何时静默?
配置更新后Pod无反应?真相是:kubelet只监听Pod Spec变更,ConfigMap/Secret内容变化不会触发重启。环境变量注入不可热更,卷挂载需应用主动监听;UID变=重建,UID不变+重启计数增=容器重启。精准判断,避免误操作。(239字)
225 1
|
6月前
|
Linux 数据安全/隐私保护 虚拟化
虚拟机安装(CentOS7)
准备CentOS7镜像及VMware Workstation虚拟机工具,可从百度云下载(提取码:h1y9/bkz3)。使用VMware创建虚拟机,参考知乎教程完成安装。默认登录用户为root,密码由用户自定义设置。需准备一台具备运行虚拟机条件的电脑。
|
6月前
|
XML 算法 安全
详解RAG五种分块策略,技术原理、优劣对比与场景选型之道
RAG通过检索与生成结合,提升大模型在企业场景的准确性与安全性。分块策略是其核心,直接影响检索效果与生成质量。本文系统解析五种主流分块方法:固定大小、语义、递归、基于文档结构及LLM分块,对比其优缺点与适用场景,并探讨RAG在金融、医疗等高风险领域的可验证性挑战与前沿优化路径。
|
6月前
|
人工智能 自然语言处理 API
全面认识MCP:大模型连接真实世界的“USB-C接口”
MCP(模型上下文协议)是AI时代的“万能接口”,由Anthropic提出,旨在统一大模型与工具、数据源的连接标准。它简化集成、提升任务处理能力,支持多步骤流程与安全合规,推动AI智能体从对话走向行动,重塑AI应用生态。
|
6月前
|
消息中间件 人工智能 决策智能
AgentScope x RocketMQ:构建多智能体应用组合
AgentScope是阿里巴巴推出的开发者友好型多智能体框架,支持模块化、可定制的智能体应用开发。通过集成RocketMQ,实现高效、可靠的Agent间通信,助力构建如“智能旅行助手”等复杂协作场景,推动多智能体生态发展。(238字)
|
6月前
|
消息中间件 人工智能 Linux
基于 RocketMQ 构建 高可靠 A2A 通信通道
A2A协议由Google于2025年发起,旨在实现跨厂商AI智能体的标准化通信。基于RocketMQ构建的异步通信方案,支持任务分发、流式交互与状态同步,助力高效、可靠的多智能体协同系统落地,现已开源。
|
3月前
|
API
快递地址解析-物流地址解析-解析物流文本-解析快递内容-自动识别地址
快递地址解析API可将杂乱地址智能拆解为省、市、区、街道、门牌号等结构化字段,支持简写、拼音、方言及语音容错,大幅提升电商收货体验。
352 2
|
6月前
|
人工智能 JSON 数据挖掘
大模型应用开发中MCP与Function Call的关系与区别
MCP与Function Call是大模型应用的两大关键技术。前者是跨模型、标准化的通信协议,实现多工具动态集成;后者是模型调用外部函数的内置机制。MCP如同“蓝牙协议”,支持多设备互联互通,具备高兼容性与扩展性;Function Call则像“语音助手”,依赖特定模型完成具体任务。二者在功能上互补:MCP构建通用接口层,解耦模型与工具;Function Call负责意图解析与指令生成。

热门文章

最新文章