引入Maven依赖
代码语言:javascript复制 <!--Mongodb的驱动包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
配置 数据源 yml
代码语言:javascript复制spring:
application:
name: comment
#数据源配置
data:
mongodb:
# 主机地址
host: 127.0.0.1
# 数据库
database: Comment
# 默认端口是27017
port: 27017
配置类
代码语言:javascript复制尚未填写
案例:简单用法
代码语言:javascript复制先注入
@Autowired
private MongoTemplate mongoTemplate;
在使用相应的方法执行相应的操作
this.mongoTemplate.updateFirst(query,update,Comment.class);
关于MongoDB Java 实体类的设置
首先,要在类上追加 @Document(collection = “集合名”) ,指定集合
在主键字段上 追加 @Id 注解 :声明此字段是对应文档的主键
其他字段,一般就@Field(“xxx”) 其中:xxx 代表MongoDB的对应集合的字段名
注意 :实体类名,在插入对象的时候,不指定文档名,就会默认以实体类名为文档名,与@Document 指定的集合名无关
实体类示例:
代码语言:javascript复制/**
* @author : zanglikun
* @date : 2021/7/16 9:25
* @Version: 1.0
* @Desc : 这是访客实体类,并声明问MongoDB的数据库 集合
*/
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.bson.types.ObjectId;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
@ApiModel("访客")
@Data
@NoArgsConstructor
@AllArgsConstructor
@Document(collection = "Vis")
public class Visitors implements java.io.Serializable {
private static final long serialVersionUID = 2811682148052386573L;
@Id
@ApiModelProperty("MongoDB记录id")
private ObjectId id;
@Field("userId")
@ApiModelProperty("我的id")
private Long userId;
@ApiModelProperty("来访用户id")
private Long visitorUserId;
@ApiModelProperty("来源,如首页、圈子等")
private String from;
@ApiModelProperty("来访时间")
private Long date;
@ApiModelProperty("得分")
private Double score; //得分
}
代码语言:javascript复制/**
* @author : zanglikun
* @date : 2021/12/6 18:48
* @Version: 1.0
* @Desc :MongoDB 分页参数 调用此方法skip参数是getPageNumber的值,pageSize正常使用即可
*/
public class MongoDbPageUtils {
/*
skip( pageSize * (pageNum - 1) ).limit( pageSize )
*/
public static Integer getPageNumber(Integer pageNum, Integer pageSize) {
return pageSize * (pageNum - 1);
}
}
MongoTemplate 常用的方法 (CRUD)
代码语言:javascript复制插入数据
this.mongoTemplate.insert(数据,表名);
this.mongoTemplate.save(数据,表名);
对比:insert 可以插入多个数据,而save是单条插入
查询数据
Query query = new Query();
// 设置查询条件
query.addCriteria(Criteria.where("字段名").is(字段值));
// 设置分页(使用skip与limit实现的分页)
query.skip(页数);
query.limit(条数);
// 设置排序规则
// 老版本的排序 query.with(new Sort(Sort.Direction.DESC, "字段名"));
// 新版的排序
query.with(Sort.by(Sort.Direction.DESC,"字段名"));
this.mongoTemplate.find(query, Visitors.class,"集合名");
更新数据
// 创建查询
Query query = new Query();
// 设置查询参数
query.addCriteria(Criteria.where("userId").is(3).and("date").ne(0));
// 创建更新
Update update = new Update();
// 修改更新参数
update.set("date",8888);
// 执行更新,只更新匹配到的第一条
//UpdateResult visitor = this.mongoTemplate.updateFirst(query, update, "Visitor");
// 更新多条
//UpdateResult visitor = this.mongoTemplate.updateMulti(query, update, "Visitor");
// 更新为数据 如果数据不存在,就插入,有就修改(不建议使用!不确定会影响几条数据!)
UpdateResult visitor = this.mongoTemplate.upsert(query, update, "Visitor");
// 结果为 AcknowledgedUpdateResult{matchedCount=1, modifiedCount=1, upsertedId=null}
删除记录
public void DeleteVisitor() {
// 创建查询
Query query = new Query();
// 设置查询参数
query.addCriteria(Criteria.where("userId").is(3).and("date").is(0));
// 执行更新
DeleteResult result = this.mongoTemplate.remove(query,"Visitor");
// 结果为 AcknowledgedDeleteResult{deletedCount=0}
}
求和
mongoTemplate.count(query, "集合名")
删除数据库 (集合)
this.mongoTemplate.dropCollection("集合名");
this.mongoTemplate.dropCollection(.Class);
查询数据
Query query = new Query();
// 设置查询条件
query.addCriteria(Criteria.where("字段名").is(字段值));
// 设置分页
query.skip(MongoDbPageUtils.pageNumber(页数,每页显示条数));
query.limit(Math.toIntExact(条));
// 设置排序规则
query.with(new Sort(Sort.Direction.DESC, "字段名"));
this.mongoTemplate.find(query, Visitors.class,"集合名");
更新数据
// 创建查询
Query query = new Query();
// 设置查询参数
query.addCriteria(Criteria.where("userId").is(3).and("date").ne(0));
// 创建更新
Update update = new Update();
// 修改更新参数
update.set("date",0);
// 执行更新
UpdateResult visitor = this.mongoTemplate.updateFirst(query, update, "Visitor");
// 结果为 AcknowledgedUpdateResult{matchedCount=1, modifiedCount=1, upsertedId=null}
求和
mongoTemplate.count(query, "集合名")
删除数据库 (集合)
this.mongoTemplate.dropCollection("集合名");
this.mongoTemplate.dropCollection(.Class);
特殊说明: 解决问题的光鲜,藏着磕Bug的痛苦。 万物皆入轮回,谁也躲不掉! 以上文章,均是我实际操作,写出来的笔记资料,不会出现全文盗用别人文章!烦请各位,请勿直接盗用!