一、前言
这里主要记录mongodb一些高级功能使用,如聚合。
二、聚合管道aggregate
聚合操作将来自多个文档的值组合在一起,并且可以对分组数据执行各种操作以返回单个结果,主要用于处理数据(诸如统计平均值,求和等)。
聚合的方法:聚合管道,map-reduce function和单一目的聚合方法。
db.collection.aggregate()是基于数据处理的聚合管道,每个文档通过一个由多个阶段(stage)组成的管道,可以对每个阶段的管道进行分组、过滤等功能,然后经过一系列的处理,输出相应的结果。
1、示例说明
现有举例:
classDo是班级信息
StudentDo是学生信息
teacherDo是老师信息
一个学生 关联一个班级;一个班级有多个学生;
一个老师挂在多个班级下;一个班级拥有多个老师;
@Data
public class ClassDo extends BaseMongoDo implements Serializable {
private static final long serialVersionUID = -8809446618654288670L;
@JSONField(name = "class_no")
private String classNo;
@JSONField(name = "class_name")
private String className;
@JSONField(name = "class_position")
private String classPosition;
}
@Data
public class StudentDo extends BaseMongoDo implements Serializable {
private static final long serialVersionUID = 3551600467011077470L;
@JSONField(name = "stu_id")
private String stuId;
@JSONField(name = "stu_name")
private String stuName;
@JSONField(name = "stu_age")
private String stuAge;
@JSONField(name = "chinese_score")
private String chineseScore;
@JSONField(name = "match_score")
private String matchScore;