Mongodb---java篇

一、导入依赖

 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency>

二、编写配置文件连接Mongodb

我的认证数据库是admin,你们可能不一样

spring:data:mongodb:host: 192.168.110.223port: 27017username: root#password: 123456# 将纯数字密码加字符串password: smartdatabase: articledbauthentication-database: admin

三、编写实体

@Data
//复合索引
@CompoundIndex( def = "{'userid': 1, 'nickname': -1}")
@Document("comment")
public class Comment implements Serializable {@Idprivate String id;//吐槽内容private String content;//发布日期private Date publishtime;@Indexedprivate String userid;//昵称private String nickname;//评论的日期时间private LocalDateTime createdatetime;//点赞数private Integer likenum;//回复数private Integer replynum;//状态private String state;//上级IDprivate String parentid;private String articleid;

四、操作数据

        可以是spring的模板方法进行crud操作,也可以自己设置Repository层进行操作,方法名和JPA有点相似。Repository默认的方法比价少,需要自己的写方法,用模板方法就要多一些

@Repository
public interface CommentRepository  extends MongoRepository<Comment,String> {Page<Comment> findByParentid(String parentid, PageRequest of);}
package net.royal.student.service;import net.royal.student.dao.CommentRepository;
import net.royal.student.entity.Comment;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;import java.util.List;/*** @author Royal*/
@Service
public class CommentService {@Autowiredprivate CommentRepository commentRepository;//注入MongoTemplate@Autowiredprivate MongoTemplate mongoTemplate;/*** 保存一个评论*/public void saveComment(Comment comment) {commentRepository.save(comment);}/*更新一个评论*/public void updateComment(Comment comment) {commentRepository.save(comment);}/*** 根据id删除评论*/public void deleteCommentById(String id) {commentRepository.deleteById(id);}/*** 查询所有评论** @return*/public List<Comment> findCommentList() {
//调用daoreturn commentRepository.findAll();}/*** 根据id查询评论** @param id* @return*/public Comment findCommentById(String id) {
//调用daoreturn commentRepository.findById(id).get();}/*** 根据父id查询分页列表* @param parentid* @param page* @param size* @return*/public Page<Comment> findCommentListPageParentId(String parentid, int page ,int size){return commentRepository.findByParentid(parentid, PageRequest.of(page-1,size));}/*** 点赞-效率低*/public void updateCommentThumbupToIncrementingOld(String id) {Comment comment = commentRepository.findById(id).get();comment.setLikenum(comment.getLikenum()+1);commentRepository.save(comment);}/*** 点赞数+1*/public void updateCommentLikenum(String id){//查询对象Query query = Query.query(Criteria.where("_id").is(id));//更新对象Update update = new Update();update.inc("likenum");mongoTemplate.updateFirst(query, update, "comment");}
}

测试我这里就不演示了,都比较简单。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/24208.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第三篇——大数据思维的科学基础

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 大数据时代&#xff0c;大数据思维的重要性不言而喻&#xff1b;而信息在…

Elasticsearch搜索优化-自定义路由规划(routing)

在es的实践学习中&#xff0c;我觉得它的文档是最好的老师&#xff0c;所以先把这部分链接贴出来&#xff0c;本文只是引导&#xff0c;文档全是细节&#xff0c;还是推荐大家事后认真看看文档 Metadata fields-routing 在es搜索中&#xff0c;请求是先分发到所有分片&#x…

6月26~28日,2024北京国际消防展即将开幕!

随着社会的快速发展&#xff0c;消防安全日益受到广大民众的高度关注。为了进一步推动消防科技的创新与发展&#xff0c;提升全民消防安全意识&#xff0c;2024年北京消防展将于6月26日在北京国家会议中心盛大开展。目前:观众预登记已全面启动&#xff0c;广大市民和业界人士可…

马尔科夫性质-举例简单说明,马尔科夫模型和隐马尔科夫模型在自然语言处理方面应用是什么

目录 马尔科夫模型应用 马尔科夫性质,举例简单说明 马尔科夫模型 马尔科夫链 马尔科夫决策过程(Markov Decision Process, MDP) 例子 隐马尔科夫模型(Hidden Markov Model, HMM) 马尔科夫模型和隐马尔科夫模型在自然语言处理方面应用是什么 马尔科夫模型在自然语言…

SQLite3(1):介绍安装与测试

目录 1、SQLite3介绍 2、SQLite3的优势和特性 3、SQLite3安装与测试 3.1 SQLite3安装 3.2 SQLite3测试 4、SQLite3简单使用 4.1 连接数据库文件 4.2 创建信息表 4.3 插入三个学生信息 4.4 确认信息 5、总结 1、SQLite3介绍 SQLite3是一种轻量级的关系型数据库管理系…

论文阅读 A Distributional Framework for Data Valuation

本论文解决的问题 量化数据价值&#xff08;机器学习模型训练中各个数据点的贡献&#xff09; 避免数据价值受到其所处数据集的影响&#xff0c;使数据点的估值更加稳定、一致 变量假设 假设 D 表示一个在全集 Z 上的数据分布。对于监督学习问题&#xff0c;我们通常认为 Z…

jvm学习笔记(一) ----- JAVA 内存

JAVA 内存 一、程序计数器二、虚拟机栈三、本地方法栈四、堆五、非JAVA内存(堆外内存)1.元空间(Metaspace)2.直接内存 链接: jvm学习笔记(二) ----- 垃圾回收 链接: jvm学习笔记(三) ----- 垃圾回收器 一、程序计数器 虚拟机需要通过『程序计数器』记录指令执行到哪了。线程要…

代码随想录算法训练营day43

题目&#xff1a;1049. 最后一块石头的重量 II 、494. 目标和、474.一和零 参考链接&#xff1a;代码随想录 1049. 最后一块石头的重量 II 思路&#xff1a;本题石头是相互粉碎&#xff0c;粉碎后剩下的重量就是两块石头之差&#xff0c;我们可以想到&#xff0c;把石头分成…

使用智谱 GLM-4-9B 和 SiliconCloud 云服务快速构建一个编码类智能体应用

本篇文章我将介绍使用智谱 AI 最新开源的 GLM-4-9B 模型和 GenAI 云服务 SiliconCloud 快速构建一个 RAG 应用&#xff0c;首先我会详细介绍下 GLM-4-9B 模型的能力情况和开源限制&#xff0c;以及 SiliconCloud 的使用介绍&#xff0c;最后构建一个编码类智能体应用作为测试。…

数据结构和算法之数组和链表

一、数组 数组是一种线性数据结构&#xff0c;它是由一组连续的内存单元组成的&#xff0c;用于存储相同类型的数据。在JavaScript中&#xff0c;数组可以包含任意类型的数据&#xff0c;不只限于基本数据类型。 1.存储方式 在内存中&#xff0c;数组的元素是连续存储的&…

【Vue】组件的存放目录问题

注意&#xff1a; .vue文件 本质无区别 组件分类 .vue文件分为2类&#xff0c;都是 .vue文件&#xff08;本质无区别&#xff09; 页面组件 &#xff08;配置路由规则时使用的组件&#xff09;复用组件&#xff08;多个组件中都使用到的组件&#xff09; 存放目录 分类开来的…

Llama模型家族之拒绝抽样(Rejection Sampling)(二)均匀分布简介

LlaMA 3 系列博客 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;一&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;二&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;三&#xff09; 基于 LlaMA…

ssti模板注入

一、Flask应用 1、介绍 定义 Flask&#xff1a;是一个使用Python编写的轻量级web应用框架。Flask基于Werkzeug WSGI工具包和Jinja2模板引擎。 特点 良好的文档、丰富的插件、包含开发服务器和调试器、集成支持单元测试、RESTful请求调度、支持安全cookies、基于Unicode。 …

手机短信删除怎么恢复?快速找回的3个秘密武器

手机&#xff0c;这个我们每天离不开的小玩意儿&#xff0c;有时候也会让我们头疼不已。比如&#xff0c;你一不小心&#xff0c;或者为了清理点空间&#xff0c;就把那些重要的短信给删了。这些短信可能是你和好友的深夜聊天&#xff0c;或者是重要的工作信息。一旦删除&#…

人工智能就业方向有哪些?

人工智能就业方向有哪些? 随着人工智能技术的不断发展&#xff0c;其应用领域也越来越广泛。对于想要进入人工智能领域的年轻人来说&#xff0c;选择一个合适的职业方向是至关重要的。今天给大家介绍六个热门的人工智能就业方向&#xff0c;分别是机器学习工程师、自然语言处理…

Webshell检测初识

最近在研究webshell检测的小东西&#xff0c;所以开启一个专门记录webshell检测工具开发的专栏&#xff0c;若有遗漏之处&#xff0c;请大佬们指出。 本篇大致了解以下内容 什么是webshll&#xff1f;有哪些类型&#xff1f;各自有什么不同&#xff1f;Webshell有哪些常见的检测…

鼠标侧键映射虚拟桌面切换 —— Win11

鼠标侧键映射虚拟桌面切换 —— Win11 基于 AutoHotkey 实现功能 下载软件 AutoHotkey建议安装在默认路径下&#xff08;C盘&#xff09; 此软件非常小&#xff0c;几乎不占用资源软件安装在默认路径以外的位置可能导致部分功能不可用 新建一个 .ahk 文件使用记事本打开该 .a…

哪款开放式耳机佩戴最舒服?2024五款备受推崇产品分享!

​在现今耳机市场&#xff0c;开放式耳机凭借其舒适的佩戴体验和独特的不入耳设计&#xff0c;备受消费者追捧。它们不仅让你在享受音乐时&#xff0c;仍能察觉周围的声音&#xff0c;确保与人交流无障碍&#xff0c;而且有利于耳朵的卫生与健康。对于运动爱好者和耳机发烧友而…

GIGE 协议摘录 —— 引导寄存器(四)

系列文章目录 GIGE 学习笔记 GIGE 协议摘录 —— 设备发现&#xff08;一&#xff09; GIGE 协议摘录 —— GVCP 协议&#xff08;二&#xff09; GIGE 协议摘录 —— GVSP 协议&#xff08;三&#xff09; GIGE 协议摘录 —— 引导寄存器&#xff08;四&#xff09; GIGE 协议…

Flutter Dismissible 属性介绍及使用指南

在移动应用开发中&#xff0c;滑动删除是一种常见的交互方式。Flutter 提供了一个强大的小部件 Dismissible&#xff0c;使得实现这一功能变得非常简单。本文将介绍 Dismissible 的主要属性及其使用方法。 1. Dismissible 简介 Dismissible 是一个 Flutter 小部件&#xff0c…