springboot 整合 mongodb实现相关业务操作


在这里插入图片描述
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
在这里插入图片描述

依赖引入

 <!--mongodb 依赖-->
 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-data-mongodb</artifactId>
 </dependency>
<!-- #自动重连-->
 <dependency>
     <groupId>com.spring4all</groupId>
     <artifactId>mongodb-plus-spring-boot-starter</artifactId>
     <version>1.0.0.RELEASE</version>
 </dependency>

配置操作指定的库:

spring:
    data:
        mongodb:
            auto-index-creation: true
            uri: mongodb://exam21244:12348475@192.168.9.164:27017/exam02
            field-naming-strategy: org.springframework.data.mapping.model.SnakeCaseFieldNamingStrategy
            #socke超长时间
            socketimeout: 2000
            #scoke保持活动
            sockeKeepAlive: true
            #自动连接
            autoConnectRetry: true

插入数据:

UserInfo userInfo = new UserInfo();
userInfo.setState(1);
userInfo.setId(null);
userInfo.setOrgId(orgId);
userInfo.setRoleId(roleId);
mongoTemplate.insert(userInfo, "userinfo");

删除数据:

Query query = new Query(Criteria.where("_id").is(id));
DeleteResult userinfo = mongoTemplate.remove(query, UserInfo.class, "userinfo");
if(userinfo.getDeletedCount()==0){
    throw new DelException("被删除用户ID不存在");
}

修改数据:

//userInfo 如果有ID则 更新数据  没有ID插入一条新数据
String phone = userInfo.getBasicInfo().getPhone();
String cardId = userInfo.getBasicInfo().getCardId();
if (!SystemUtil.isMobile(phone) || !SystemUtil.isIDNumber(cardId)) {
    return ApiData.formatError();
}
//参数一:更新的数据对象,  参数二:更新的表名
mongoTemplate.save(userInfo, "userinfo");

局部修改数据:

//更新条件
Query query = new Query(Criteria.where("_id").is(id));
Update update = new Update();
//更新的位置
/*
update.addToSet("basic_info.card_id", cardId);
addToSet:会报错 Cannot apply $addToSet to non-array field. Field named 'card_id' has non-array type string
原因:addToSet方法需要一个数组
如果是指定条件更新  使用 set方法更好
*/
update.set("basic_info.card_id", cardId);
//参数一:条件   参数二:更新的位置   参数三:更新的表(collection)
UpdateResult result = mongoTemplate.updateFirst(query, update, "userinfo");
// 更新成功后的结果 result.getMatchedCount() = 1 result.getModifiedCount() = 1

查询数据:

UserLogin userLogin = (UserLogin) redisData.get("userLogin");       根据ID查
return mongoTemplate.findById(userLogin.getUserId(), UserInfo.class, "userinfo");
Query query = new Query(Criteria.where("role_id").is(SysConstant.STUDENT_ROLE));
query.fields().include("_id");     根据条件查
List<UserInfo> userInfos = mongoTemplate.find(query, UserInfo.class, "userinfo");
Query uf = new Query(Criteria.where("basic_info.card_id").is(cardId).and("basic_info.phone").is(phone));
UserInfo userinfo = mongoTemplate.findOne(uf, UserInfo.class, "userinfo");   根据条件查
long totalSize = mongoTemplate.count(new Query(), UserInfo.class, "userinfo");  //查总条数

修 改 器

更新修改器是特殊的键,用来指定复杂的更新操作,比如调整,增加或者删除,还可以操作数组和内嵌文档。

1、KaTeX parse error: Expected '}', got 'EOF' at end of input: inc 增加和减少 用法:{inc:{field:value}}对一个数字字段field增加value。
注意:$inc指定的字段必须是数字类型的。
在这里插入图片描述

2、$set 与 $unset修改器
用法:{ KaTeX parse error: Expected 'EOF', got '}' at position 25: …ield : value } }̲ 就是相当于sql的set f…set,如果修改的字段不存在,则自动创建。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星空 | 永恒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值