MongoDB实战演练

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

本项目基于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

相关文章
|
4月前
|
监控 Java 调度
XXLJob定时任务概述
定时任务是基于时间表达式调度执行的任务,适用于定时对账、超时取消等场景。单体架构可使用轮询、Timer、ScheduledExecutorService、Quartz或SpringTask;分布式环境下需解决重复执行、故障转移等问题,主流方案有XXL-JOB、Elastic-Job、Saturn和ScheduleX。
|
4月前
|
机器学习/深度学习 存储 自然语言处理
大模型基础概念术语解释
大语言模型(LLM)基于Transformer架构,通过海量文本训练,实现强大语言理解与生成。其核心包括注意力机制、位置编码、嵌入层等,支持万亿级参数与涌现能力,能完成翻译、问答等多任务,展现卓越泛化与推理能力。
|
4月前
|
机器学习/深度学习 数据采集 人工智能
大模型训练方法与技术术语解释
预训练、微调、RLHF、思维链等技术共同构建大模型能力。预训练打基础,微调适配具体任务,RLHF融入人类偏好,思维链提升推理,少/零样本学习增强泛化,指令微调优化交互,自监督学习利用海量无标注数据,温度控制生成风格,蒸馏实现知识迁移,缩放定律指导模型扩展。这些核心技术推动大模型在多领域智能应用中持续突破,实现从理解到创造的跨越。(238字)
|
4月前
|
XML 算法 安全
详解RAG五种分块策略,技术原理、优劣对比与场景选型之道
RAG通过检索与生成结合,提升大模型在企业场景的准确性与安全性。分块策略是其核心,直接影响检索效果与生成质量。本文系统解析五种主流分块方法:固定大小、语义、递归、基于结构和基于LLM的分块,对比其优缺点及适用场景,助力构建高效、可信的RAG系统,尤其适用于金融、医疗等高精度领域。(239字)
|
4月前
|
人工智能 JSON 数据挖掘
大模型应用开发中MCP与Function Call的关系与区别
MCP与Function Call是大模型应用的两大关键技术。前者是跨模型的标准协议,实现多工具动态集成;后者是模型调用外部功能的机制。MCP构建通用连接桥梁,支持多模型、跨平台协作,具备高扩展性与解耦能力;Function Call则依赖特定模型,直接解析意图并调用函数。两者在企业级系统中可协同工作:模型通过Function Call识别意图,转为MCP标准请求调用工具,兼顾智能解析与生态扩展。未来将趋向融合,形成“模型解析-协议传输-工具执行”的统一范式。
|
4月前
|
消息中间件 人工智能 Linux
基于 RocketMQ 构建 高可靠 A2A 通信通道
A2A协议由Google于2025年发起,旨在构建跨厂商AI智能体的标准化通信机制。通过支持gRPC、JSON-RPC及RocketMQ异步通信,实现多智能体高效协同。基于RocketMQ的实现方案提供开箱即用的高可靠通信,支持任务分发、流式交互与状态查询,助力构建开放、可扩展的多智能体系统生态。(238字)
|
4月前
|
消息中间件 人工智能 决策智能
AgentScope x RocketMQ:构建多智能体应用组合
AgentScope是阿里巴巴推出的开发者友好型多智能体框架,支持模块化、可定制的智能体应用开发。通过集成RocketMQ,实现高效、可靠的A2A通信,助力构建如“智能旅行助手”等复杂协作场景,提升开发效率与系统可扩展性。(238字)
|
4月前
|
人工智能 自然语言处理 API
全面认识MCP:大模型连接真实世界的“USB-C接口”
MCP(模型上下文协议)是Anthropic推出的AI“万能接口”,旨在统一大模型与工具、数据源的连接标准。它简化集成、提升任务处理能力,被誉为AI时代的“USB-C”。通过标准化通信,MCP让智能体可自主调用工具、执行复杂任务,推动AI应用迈向高效、安全、可扩展的新阶段。
|
4月前
|
SQL 缓存 Java
MyBatis
MyBatis配置优先级:方法参数 > resource/url > properties体内。支持多环境、JDBC/MANAGED事务管理,XML实现一对一、一对多关联映射,分页支持逻辑与物理方式,推荐BatchExecutor批量操作,一级缓存默认开启,二级缓存需手动配置。
|
4月前
|
SQL 运维 分布式计算
如何做好SQL质量监控
SLS推出用户级SQL质量监控功能,集成于CloudLens for SLS,提供健康分、服务指标、运行明细、SQL Pattern分析及优化建议五大维度,帮助用户全面掌握SQL使用情况,实现精细化管理与性能优化,提升日志分析效率与体验。