MongoDB实现聚合(多表联查)springBoot

参见:原文链接:https://blog.csdn.net/weixin_44530530/java/article/details/91901631

 

依赖:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
 </dependency>

 

两表联查
 /**
     * 两表联查
     *
     * @return
     */
    @Override
    public Object findStudentAndGrade() {
        LookupOperation lookupOperation=LookupOperation.newLookup().
                from("grade").  //关联从表名
                localField("gradeId").     //主表关联字段
                foreignField("_id").//从表关联的字段
                as("GradeAndStu");   //查询结果名
//带条件查询可以选择添加下面的条件
//       Criteria criteria=Criteria.where("studenAndgrade").not().size(0);   //只查询有结果的学生
//        Criteria qqq=Criteria.where("name").regex("文");//只查询名字中带有文的
 //       AggregationOperation match1= Aggregation.match(qqq);
//        AggregationOperation match = Aggregation.match(criteria);
//        Aggregation counts = Aggregation.newAggregation(match1,lookupOperation,match).;
       Aggregation aggregation=Aggregation.newAggregation(lookupOperation);
        List<Map> results = mongoTemplate.aggregate(aggregation,"student", Map.class).getMappedResults();
        //上面的student必须是查询的主表名
        System.out.println(JSON.toJSONString(results));
        return results;
    }

 

上一篇:类之间的关系详解:Aggregation(聚合)、Composition(组合)、Dependency(依赖)、Generalization(泛化)、Realization(实现)


下一篇:Aggregation level-聚集等级/BPC/ input ready query