반응형

Map안에 특정 Key를 가진 데이터가 한계씩 존재하는 경우가 존재하면 해당 리스트에서 특정 Key에 해당하는 Map데이터만 뽑아내야하는 경우가 발생하였다. 그래서 다음과 같이 stream().filter()를 이용하여 데이터를 추출하였다.

public static Date getLatestDateByLatestDateList(Long procIdx, List<Map<Long, Date>> latestDateMapList) {
		Stream<Map<Long, Date>> filterLatestDateListStream = latestDateMapList.stream().filter(date -> date.containsKey(procIdx));
		return filterLatestDateListStream.collect(Collectors.toList()).get(0).get(procIdx);
}

위 코드와 같은 경우는 List에 unique하게 데이터가 존재해서 get(0)을 통해서 데이터를 추출했지만, 중복된 데이터일 경우 코드 수정이 필요할 것으로 예상된다.

728x90
반응형
//컬렉션 초기화
MongoCollection<Document> auditLogCol = mongoTemplate.getCollection("AUDIT_LOG");

//where 조건 쿼리
BasicDBObject dateTermQuery = MogoDBUtil.getDateTermFindQuery("body_event_time", vo.getStartDate(), vo.getEndDate());
dateTermQuery.put("body_host_ip", vo.getHostIp());
        
List<BasicDBObject> uidQueryList = new ArrayList<BasicDBObject>();

//$match 부분 초기화
BasicDBObject matchQuery = new BasicDBObject("$match", dateTermQuery);
//$group 부분 추기화
BasicDBObject groupUidQuery = new BasicDBObject("$group", new BasicDBObject("_id", "$body_uid"));
		
uidQueryList.add(matchQuery);
uidQueryList.add(groupUidQuery);
//aggregate 요청
List<Document> uidList = auditLogCol.aggregate(uidQueryList).into(new ArrayList<>());
728x90

'[개발관련] > Database(MongoDB)' 카테고리의 다른 글

인덱스 생성/삭제 쿼리  (0) 2021.01.30
몽고DB import/exprot 쿼리  (0) 2020.12.26
MySql, MongoDB 문법비교 그림  (0) 2020.12.09
몽고디비란?  (0) 2019.12.23
반응형

StringTokenizer

Java에서 string을 token단위로 끊어 주는 StringTokenizer클래스를 제공함

StringTokenizer(String str)

String str = "a b c"; 
StringTokenizer tokenizer = new StringTokenizer(str); 
System.out.println(tokenizer.countTokens()); // 3 

while(tokenizer.hasMoreTokens()){ 
    System.out.println(tokenizer.nextToken()); 
}

결과값

3 
a
b 
c

StringTokenizer(String str, String delim)

String str = "a%b%c"; 
StringTokenizer tokenizer = new StringTokenizer(str,"%"); 
System.out.println(tokenizer.countTokens()); 

while(tokenizer.hasMoreTokens()){ 
    System.out.println(tokenizer.nextToken()); 
}

결과값

3 
a 
b 
c

StringTokenizer(String str, String delilm, boolean returnDelims)

returnDelims가 true이면 구획문자를 리턴하게됨

String str = "a%b%c"; 
StringTokenizer tokenizer = new StringTokenizer(str,"%",true); 
System.out.println(tokenizer.countTokens()); 

while(tokenizer.hasMoreTokens()){ 
    System.out.println(tokenizer.nextToken()); 
}

결과값

5 
a 
% 
b 
% 
c

https://github.com/jshag90/TIL/blob/master/Java/191125-StringTokenizer.md

728x90

+ Recent posts