MongoTemplate復合條件查詢


分、 排序、按時間查詢 

     Query query = new Query();
        //必須條件
        Criteria c = Criteria.where("VINID").is(Map.get(vin));
        //范圍條件
        if(!StringUtils.isEmpty(start)&&StringUtils.isEmpty(end)){
            c.and("TIME1").gte(GetTime1(start));
        }else if(StringUtils.isEmpty(start)&&!StringUtils.isEmpty(end)){
            c.and("TIME1").lte(GetTime1(end));
        }else if(!StringUtils.isEmpty(start)&&!StringUtils.isEmpty(end)){

//對同一個屬性加兩次限制需這樣操作
            c.andOperator(
            c.where("TIME1").gte(GetTime1(start)),
            c.where("TIME1").lte(GetTime1(end))
            );
        }
        query.addCriteria(c);
        //總數
        num = (int) mongoTemplate.count(query,CarDataEx.class,"jmevTest");
        System.out.println("總數:"+num);
        ht.put("total", num);
        //分頁
        query.skip((page-1)*rows).limit(rows);
        //排序
        query.with(new Sort(Sort.Direction.DESC,"TIME1"));
                //query.with(new Sort(properties));
                rst = mongoTemplate.find(query,CarDataEx.class,"jmevTest");

 

二分組查詢

 public Page<CourseDetail> listCourseDetails(QueryCourseDetailModel queryModel) { ​ //條件一 where gradeId in (集合) and mark=true  Criteria criteria = Criteria.where("gradeId").in(gradeIds).and("mark").is(true); ​ if (null != status && status.size() > 0) { Criteria criteriaChild = new Criteria();  //條件二 criteriaChild 條件查詢 ( teacherCommentStatus = XX or parentsReplyTeacherStatus =XX )  criteriaChild.orOperator(Criteria.where("teacherCommentStatus").in(status), Criteria.where("parentsReplyTeacherStatus").is(replayStatus));  } ​ //拼接最后語句 where gradeId in (集合) and mark=true and ( teacherCommentStatus = XX or parentsReplyTeacherStatus =XX )  criteria.andOperator(criteriaChild);   //分組條件  GroupBy groupBy = new GroupBy("gradeId") .initialDocument("{ count: 0 }") .reduceFunction("function (doc,pre){pre.count +=1 ;}");   //使用 mongoTemplate.group 分組查詢  GroupByResults groupByResults = mongoTemplate. group(criteria, "homework", groupBy, Homework.class);   //獲取結果  BasicDBList list = (BasicDBList) groupByResults.getRawResults().get("retval");  list.stream().map(map -> { BasicDBObject obj = (BasicDBObject) map;  ...... return obj;  }).collect(Collectors.toList()); ​ return list;   ​}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM