MongoDBの操作2

{
     "_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": "计算机应用技术"  "クラス名":「javaの一班」
        "studentId": "029f7fd62186bfd1e9b2047f76095361"  "userNameに": "小杨"  "snowFlakeId":NumberLong(120986237900296192 )、
         "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")}}]})

 

 

Javaのエンティティでは、フィールドは、エンティティに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");
クエリのクエリ=新しいクエリ();
基準の基準=新基準();
IF(attendenceEntity.getCurrPage()= 0 && attendenceEntity.getPageSize()= 0!){
query.skip((attendenceEntity.getCurrPage() - 1)* attendenceEntity.getPageSize())
.limit(attendenceEntity.getPageSize()) ;
}
IF(StrUtil.isNotEmpty(attendenceEntity.getDepId())){
criteria.and( "orgEntity.depId")(attendenceEntity.getDepId())です。
}
IF(StrUtil.isNotEmpty(attendenceEntity.getGrade())){
。criteria.and( "orgEntity.grade")である(attendenceEntity.getGrade());
}
IF(StrUtil.isNotEmpty(attendenceEntity.getUsername())){
criteria.and( "orgEntity.userName")(attendenceEntity.getUsername())です。
}
IF(StrUtil.isNotEmpty(attendenceEntity.getStudentNumber())){
criteria.and( "orgEntity.studentNumber")(attendenceEntity.getStudentNumber())です。
}
IF(StrUtil.isNotEmpty(attendenceEntity.getSchoolId())){
criteria.and( "orgEntity.schoolId")(attendenceEntity.getSchoolId())です。
}

IF(StrUtil.isNotEmpty(attendenceEntity.getStuId())){
criteria.and( "MEMBERID")(attendenceEntity.getStuId())です。
}

IF(!。attendenceEntity.getDepIds()= NULL && attendenceEntity.getDepIds()サイズ()> 0){
criteria.and( "orgEntity.depId")(attendenceEntity.getDepIds())中。
}

IF(!。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