{ "_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);
데이터를 반환;
}