springboot与mongodb之增删改查
一、引用mongoTemplate
@Resource private MongoTemplate mongoTemplate;
二、分页查询
controller
@Resource private FillingRecordsService fillingRecordsService; @GetMapping("list") public Result>list( @Validated PageValidate pageValidate){ PageList list = fillingRecordsService.getList(pageValidate); return Result.OK(list); }
service
@Resource MongoTemplate mongoTemplate; public PageList getList(PageValidate pageValidate ) { PageListpageList=new PageList(); Query query = new Query(); Criteria criteria = new Criteria(); /* if (StringUtils.isNotBlank(platformId)) { criteria.and("platformId").is(platformId); }*/ // 查询总数 query.addCriteria(criteria); long count = mongoTemplate.count(query, FillingRecords.class); if (count <= 0) { return pageList; } // 按getPointDate进行降序排序并分页查询 query.with(Sort.by(Sort.Order.desc("createdAt"))) .skip((long)(pageValidate.getPage() - 1) * pageValidate.getLimit()) .limit(pageValidate.getLimit()); List list = mongoTemplate.find(query, FillingRecords.class); pageList.setTotal((int)count); pageList.setPage(pageValidate.getPage()); pageList.setLimit(pageValidate.getLimit()); pageList.setRecords(list); return pageList; }
返回参数
package cn.wmadmin.co2.member.vo; import lombok.Data; import java.util.List; @Data public class PageList{ private int page; private int limit; private int total; private List records; }
分页参数
package cn.wmadmin.co2.common.validate; import io.swagger.annotations.ApiModel; import lombok.Data; import javax.validation.constraints.DecimalMax; import javax.validation.constraints.DecimalMin; import java.io.Serializable; @Data @ApiModel("分页参数") public class PageValidate implements Serializable { private static final long serialVersionUID = 1L; // 当前分页 @DecimalMin(value = "1", message = "page参数必须大于0的数字") public Integer page = 1; // 每页条数 @DecimalMin(value = "1", message = "pageSize参数必须是大于0的数字") @DecimalMax(value = "60", message = "pageSize参数必须是小于60的数字") private Integer limit = 20; }
三、保存数据
// 比较简单,data即为对象或者对象的集合 Data data = new Data(); data.setCode("123"); data.setName("测试"); mongoTemplate.insert(data, dbName);
四、修改数据
public void testUpdate() { // 设置修改内容 Update update = new Update(); update.set("name", "测试2222"); // 创建查询条件 Criteria criteria = Criteria.where("code").in("123"); Query updateQuery = new Query(criteria); // 更新数据 mongoTemplate.updateMulti(updateQuery, update, "dbName"); }
五、删除数据
public void testDelete() { // 创建删除条件 Criteria criteria = Criteria.where("code").in("123"); Query deleteQuery = new Query(criteria); // 删除数据 mongoTemplate.remove(deleteQuery, "dbName"); }
六、聚合查询
注:聚合函数只能对数字类型的字段进行操作
// 以平均查询为样例,聚合操作只支持数字类型的字段 public void testAvg() { // 聚合集合 Listoperations = new ArrayList<>(); // 查询条件 Criteria criteria = Criteria.where("code").in("123"); MatchOperation match = Aggregation.match(criteria); // 设置分组条件,样例没有设置分组条件 GroupOperation group = Aggregation.group(); // 聚合操作 group = group.avg("number1").as("avg").sum("number2").as("sum"); operations.add(match); operations.add(group); Aggregation aggregation = Aggregation.newAggregation(operations); List