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 ) {
        PageList pageList=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() {
        // 聚合集合
        List operations = 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 
        
 
        
