Spring Boot集成mongodb数据库
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,一.认识mongodbMongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比
千家信息网最后更新 2026年10月31日Spring Boot集成mongodb数据库
一.认识mongodb
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
二.Spring boot项目集成mongodb
1.添加mongodb依赖
org.springframework.boot spring-boot-starter-data-mongodb 2.配置mongodb的连接
spring: data: mongodb: #uri: mongodb://localhost:27017/data_exploration uri: mongodb://root:dhcc-mongodb@192.168.100.87:27017/data_exploration?authSource=admin&authMechanism=SCRAM-SHA-1解析:以上uri分别代表本地配置和远程连接
3.操作数据库
(1)保存
@Repositorypublic class ExplorationJobDao { @Autowired MongoTemplate mongoTemplate; public void save(ExplorationJob explorationJob) { mongoTemplate.save(explorationJob); }}(2)根据ID修改一条数据(其原理先符合ID的数据,然后删除查询结果的第一条)
public void updateExecutionStatusById(int executionStatus, String jobId) { Query query = new Query(Criteria.where("jobId").is(jobId)); Update update = new Update().set("executionStatus", executionStatus); mongoTemplate.updateFirst(query, update, ExplorationJob.class); }(3)根据条修改多条数据(查询符合ID的所有数据,然后将所有数据修改)
public void update(BusinessExploration businessExploration) { Query query = new Query(Criteria.where("_id").is(businessExploration.getId())); Update update = new Update().set("sourceUnit", businessExploration.getSourceUnit()) .set("appSystem", businessExploration.getAppSystem()) .set("businessImplication", businessExploration.getBusinessImplication()) .set("safetyRequire", businessExploration.getSafetyRequire()); mongoTemplate.updateMulti(query, update, TableExploration.class); }(4)删除(根据ID删除)
public void delExplorationJobById(String jobId) { Query query=new Query(Criteria.where("jobId").is(jobId)); mongoTemplate.remove(query,ExplorationJob.class); }(5)根据条件查询(根据ID查询)
public ExplorationJob getExplorationJobByJobId(String jobId) { Query query = new Query(Criteria.where("jobId").is(jobId)); ExplorationJob explorationJob = mongoTemplate.findOne(query, ExplorationJob.class); return explorationJob; }(6)查询所有
mongoTemplate.findAll(TableExploration.class);(7)多条件动态查询
public List getExplorationByCondition(ExplorationJob explorationJob) { Query query = new Query(); if (explorationJob.getJobName() != null) { Pattern pattern = Pattern.compile("^.*" + explorationJob.getJobName() + ".*$", Pattern.CASE_INSENSITIVE); query.addCriteria(Criteria.where("jobName").regex(pattern)); } if (explorationJob.getDsType() != null) { query.addCriteria(Criteria.where("dsType").is(explorationJob.getDsType())); } if (explorationJob.getExecutionStatus() != null) { query.addCriteria(Criteria.where("executionStatus").lte(explorationJob.getExecutionStatus())); } List explorationJobs=mongoTemplate.find(query, ExplorationJob.class); return explorationJobs; } (8)查询最大值
public Date getMaxExplorationDate(String tableName) { FindIterable iterable = mongoTemplate.getCollection("tableExploration") .find(new BasicDBObject("tableName", tableName)).sort(new BasicDBObject("explorationDate", -1)).skip(0) .limit(1); Document doc =null; if (getDocuments(iterable).size()>0) { doc=getDocuments(iterable).get(0); Date date = doc.getDate("explorationDate"); return date; }else { return null; } } /** * 工具方法 * * @param iterable * @return */ public static List getDocuments(FindIterable iterable) { List results = new ArrayList(); if (null != iterable) { MongoCursor cursor = iterable.iterator(); Document doc = null; while (cursor.hasNext()) { doc = cursor.next(); results.add(doc); } } return results; } (9)分组查询(这里还是用到了排序)
public List getAllTableExplorationGroupByTableName(String jobId){ Aggregation aggregation = Aggregation.newAggregation( Aggregation.match(Criteria.where("jobId").is(jobId)), Aggregation.sort(new Sort(Direction.DESC,"explorationDate")), Aggregation.group("tableName") .first("_id").as("tableName") .first("databaseType").as("databaseType") .first("databaseName").as("databaseName") .first("networkSituation").as("networkSituation") .first("userName").as("userName") .first("password").as("password") .first("url").as("url") .first("dataStorage").as("dataStorage") .first("dataIncrement").as("dataIncrement") .first("explorationDate").as("explorationDate") //.push("columnExplorations").as("columnExplorations") .first("jobId").as("jobId") ); AggregationResults aggregationResults= mongoTemplate.aggregate(aggregation, "tableExploration", TableExploration.class); List tableExplorations=aggregationResults.getMappedResults(); return tableExplorations; 【常用操作总结完毕】
数据
查询
数据库
支持
最大
功能
条件
语言
配置
复杂
强大
松散
之间
产品
代表
动态
原理
多条
对象
工具
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
云之行互联网科技
中关村互联网科技集团
重生之互联网科技帝国
新华互联网科技学院
互联网核心科技是什么
互联网品科技
互联网中国科技
互联网科技英文
互联网与未来科技
碳银互联网科技
华中科技大学互联网
互联网 新科技
科技类的互联网平台
互联网科技类展会
中化能源互联网科技招聘
2021互联网科技公司排名
互联网安防科技感
互联网科技平台产品运营
好易买互联网科技
互联网企业和网络科技有限公司
美国互联网科技巨头监管
润盈互联网科技
恒生科技互联网指数分析
济南华为互联网科技产业总部基地
栖莱科技互联网股份有限公司
成都铂石互联网科技做什么的
新兴科技互联网创新大赛颁奖典礼
西安小鹰速贷互联网科技有限公司
上海钢联属于互联网科技股吗
科技信息时代互联网发展