「这是我参与2022首次更文挑战的第2天,活动详情查看:2022首次更文挑战」
1、前言
在上一篇的分享中,我为大家介绍了mongo的安装,本次为大家分享下,SpringBoot项目整合mongo,及具体操作。
2、配置mongo
配置文件里增加用户名密码等参数:
data:
mongodb:
host: 127.0.0.1
port: 27017
username: root
password: root
database: test
authentication-database: admin
connections-per-host: 50
min-connections-per-host: 50
pom文件里增加如下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
3、整合MongoDB
3.1、创建数据表实体类
这里,我们不需要去创建集合,只要将实体类写好,项目启动后就会映射到mongo中。
/**
* @Title: MongoUserBehavior
* @date: 2021/10/22 14:33
*/
@Document(collection = "user_behavior") //标注集合的名称
@CompoundIndexes({
@CompoundIndex(name = "user_behavior_idx", def = "{common_info_id : 1, behavior_object_id : 1}")
}) //索引注解,def中有多个值表明为联合索引,1表示正序 -1表示倒序
@Data
@AllArgsConstructor
@NoArgsConstructor
public class MongoUserBehavior {
/**
* 用户主键ID
*/
private String zshy_hyh_common_info_id;
/**
* 物品ID->(文章的ID)
*/
private String behavior_object_id;
/**
* 是否喜欢、收藏
*/
private Boolean has_like;
/**
* 是否评论
*/
private Boolean has_comment;
/**
* 是否分享
*/
private Boolean has_share;
/**
* 观看次数
*/
private Integer read_num;
/**
* 最新阅读/观看时间 - 时间戳
*/
private Long last_read_time;
/**
* 观看最大时长-秒值
*/
private Long read_max_interval_time;
/**
* 观看最大百分比
*/
private Double read_max_percent;
/**
* 观看总时长-秒值
*/
private Long total_read_interval_time;
/**
* 视频长度 - 秒数
*/
private Long video_length;
/**
* 用户行为详细信息
*/
private List<MongoUserBehaviorItem> userBehaviorItems;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public class MongoUserBehaviorItem {
/**
* 本次用户行为的唯一uid
*/
private String user_behavior_uid;
/**
* 用户行为开始时间 - 时间戳
*/
private Long start_time;
/**
* 用户行为结束时间 - 时间戳
*/
private Long end_time;
/**
* 行为时间间隔-秒值
*/
private Long interval_time;
/**
* 行为类型
*/
private Integer user_behavior_type;
/**
* 观看百分比
*/
private Double read_percent;
}
查询操作:
Criteria criteria = Criteria.where("common_info_id").is(userBehavior.getCommon_info_id())
.and("behavior_object_id").is(userBehavior.getBehavior_object_id());
Query queryUserBehavior = new Query(criteria);
List<MongoUserBehavior> mongoUserBehaviors = mongoTemplate.find(queryUserBehavior, MongoUserBehavior.class);
增加数据:
mongoTemplate.save(mongoHyhUserBehavior);
更新操作:
//这里使用#.$.#是因为我是更新的文档里的数组的数据
Update update = Update.update("userBehaviorItems.$.end_time", userBehavior.getBehavior_end_time())
.set("userBehaviorItems.$.interval_time", betweenSeconds);
mongoTemplate.updateFirst(queryUserBehaviorItem, update, MongoUserBehavior.class);
//updateFirst更新第一条匹配到的数据
好了、本期就先介绍到这里,下期为大家介绍如何进行复杂查询等,有什么需要交流的,大家可以随时私信我。😊