MongoDB의 작업이

{
     "_id"ObjectId가 ( "5d4d74e1685764420c4f9337" ),
     "CreateTime 더"ISODate ( "2019-08-09T13 : 25 : 33.851Z" ),
     "modifiedTime"ISODate ( "2019-08-09T13 : 25 : 33.851Z" )
     "으로 isDeleted": 0 ,
     "dateYmd": "2019년 8월 9일" ,
     "memberNumber": "10025" ,
     "이름": "小杨" ,
     "attendenceTime"ISODate ( "2019-08-09T13 : 25 : 33.851Z " ),
     " ORGENTITY " : {
         " schoolId ":"f11c8ea12f457dbc19c768a8bb6357f8 ",
         "SchoolName": "대학 생활" ,
         "depName": "컴퓨터 아카데미" ,
        "depId": "5ca65e204a75670545bfe67418c1fd00" ,
         "majorId": "ca46da02e825dcf2ceb48a67e3a888db를" ,
         "CLASSID": "87108cd7b71775fdf45a220eb734b6be" ,
         "majorField": ".NET开发를" ,
         "majorName": "计算机应用技术" ,
         "클래스 이름": "자바一班" 
        "studentId ":"029f7fd62186bfd1e9b2047f76095361 ' ,
         '사용자 이름 ":"小杨" ,
         "snowFlakeId "NumberLong으로 (120,986,237,900,296,192 )
         "studentNumber ":"10025 " ,
        "등급": "2018" 
    },
     "teacherId": "1fbb4bd971550b540e2fb58b3f1efe52" 
}

의 설정하여 MongoDB의 mogu_attendance 같은 테이블 :

같은 schoolId 쿼리 등의 분야에서 ORGENTITY에 따르면 :

MongoDB의 쿼리는 다음과 같이 :

. db.getCollection ( 'mogu_attendance은'() { "찾을 orgEntity.schoolId "f11c8ea12f457dbc19c768a8bb6357f8 ","
"orgEntity.classId을": { "$의에서": [ "5a05540e9fd1ce8604015f3fa5067b63을",
"61a582659385c9b91033bad877609758", "70ef8baad5d97ae7b77c6df3038b0d84",
"87108cd7b71775fdf45a220eb734b6be" ]}
"$와"[{ "attendenceTime"{ "$ GTE"ISODate ( "2018-09-12T06 : 11 : 47.000Z")}},
{ "attendenceTime"{ "$의 LTE"ISODate ( "2029-09-22T06 : 11 : 47.000Z")}}]})

 

 

자바 개체에서 필드는 엔티티로 schoolId으로 조회 할 필요가있다 :

@Data
 공용  클래스 MoguAttendenceEntity이 연장 BaseEntity가 구현 직렬화 {
     개인  정적  최종  길이 의 serialVersionUID = 1L ; 

    / ** 
     *唯一主键
     * / 

    개인 문자열 attendanceId; 
    
    / ** 
     *学校ID 
     * / 
    개인 문자열 schoolId을 ; 

    
    / ** 
     *是否补卡
     * / 
    개인 정수 isReplace; 

    개인 목록 <MongoGxyPracticeLogDto> logDtoList;
    / ** 
     *入参
     * / 
    개인날짜 startTime을;
    개인 날짜 endTime- 사용자;
    개인 문자열 주석;
    개인 목록 <문자열> attendenceIds;
    개인 정수 applyState;
    개인 문자열 teaId;
    개인 날짜 날짜 시간; 

    개인 문자열 depId;
    개인 문자열 majorId;
    개인 문자열 CLASSID;
    개인 문자열 사용자 ID;
    개인 긴 snowFlakeId;
    / ** 
     *筛选天数条件(1连续3天2七天一个月3) 
     * / 
    개인 정수 dayType;
    / ** 
     *表名
     * / 
    개인  문자열 attendencdTabName;
    개인 문자열 stuTabName;
    개인 문자열 roleKey;
    개인 목록 <문자열> depIds;
    개인 목록 <문자열> 된 CLASSID; 

    / ** 
     *考勤时间
     * / 
    개인 날짜 attendenceTime; 

    개인 목록 <MoguAttendenceEntity> attendenceDtos; 

    개인 문자열 백업; 

    개인 ORGENTITY ORGENTITY; 

    개인 문자열 studentId; 

    개인 문자열 teacherId; 

    개인 문자열 등급;

  개인 목록 <문자열> 된 CLASSID;
}

다음과 같이 코드입니다 :

moguAttendenceEntity.setClassIds (getClassIds (요청));

 

공개 목록 <MongoMoguAttendenceDto> listAttendance (MoguAttendenceEntity attendenceEntity) { 
정렬 종류 = 새로운 정렬 (Sort.Direction.ASC, "attendenceTime");
검색어 쿼리 = 새 쿼리 ();
분류 기준을 새로운 기준 = ();
경우 (attendenceEntity.getCurrPage () = 0 && attendenceEntity.getPageSize () = 0!) {
query.skip ((attendenceEntity.getCurrPage () - 1) * attendenceEntity.getPageSize ())
으로 제한 할 (attendenceEntity.getPageSize ()) ;
}
(StrUtil.isNotEmpty (attendenceEntity.getDepId ())) {경우
criteria.and ( "orgEntity.depId")이있다 (attendenceEntity.getDepId ()).;
}
경우 (StrUtil.isNotEmpty (attendenceEntity.getGrade ())) {
. criteria.and ( "orgEntity.grade")는 인 (attendenceEntity.getGrade ());
}
경우 (StrUtil.isNotEmpty은 (는 attendenceEntity.getUsername ()가)) {
. criteria.and ( "orgEntity.userName")는 인 (attendenceEntity.getUsername ());
}
경우 (StrUtil.isNotEmpty은 (는 attendenceEntity.getStudentNumber ()가)) {
. criteria.and는 ( "orgEntity.studentNumber")는 인 (attendenceEntity.getStudentNumber ());
}
(StrUtil.isNotEmpty (attendenceEntity.getSchoolId ())) {경우
criteria.and ( "orgEntity.schoolId")이있다 (attendenceEntity.getSchoolId ()).;
}

(StrUtil.isNotEmpty (attendenceEntity.getStuId ())) {경우
criteria.and ( "MEMBERID")이있다 (attendenceEntity.getStuId ()).;
}

경우 (attendenceEntity.getDepIds () = NULL && attendenceEntity.getDepIds ()의 크기 ()> 0!.) {
criteria.and에서 ( "orgEntity.depId") (attendenceEntity.getDepIds ()).;
}

경우 (attendenceEntity.getClassIds () = NULL && attendenceEntity.getClassIds ()의 크기 ()> 0!.) {
criteria.and에서 ( "orgEntity.classId") (attendenceEntity.getClassIds ()).;
}

경우 (attendenceEntity.getTeacherId () = NULL!) {
criteria.and ( "teacherId")이있다 (attendenceEntity.getTeacherId ()).;
}

경우 (! StringUtils.isEmpty (attendenceEntity.getStartTime ()) &&! StringUtils.isEmpty (attendenceEntity.getEndTime ())) {
criteria.andOperator (
Criteria.where ( "attendenceTime"). GTE (attendenceEntity.
Criteria.where ( "attendenceTime") LTE (attendenceEntity.getEndTime ()).
);
}

query.addCriteria (기준);
query.with (종류);
목록 <MongoMoguAttendenceDto> 데이터 = mongoTemplate.find (쿼리, MongoMoguAttendenceDto.class);

데이터를 반환;
}

추천

출처www.cnblogs.com/z360519549/p/11520007.html