336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
Spring-Data-MongoDB Aggregation 사용하기
@ Sort 정렬하기
이전의 방식 Aggregation 패턴을 이용해서 Sort를 진행해본다
기존 Aggregation 패턴에서 Operation을 추가하고 Aggregation에 추가를 해주면 된다
sort할 항목과 오름차순, 내림차순을 입력해주면 된다
@ Skip 건너뛰기
건너뛰기도 SkipOpration으로 추가 후 Aggregation에 추가를 해주면 된다
Aggregation.skip(); 에 넣은 데이터 만큼 건너뛰고 출력을 해준다
@ Limit 지정한 수 만큼 가져오기
Limit도 LimitOpration으로 추가 후 Aggregation에 추가를 해주면 된다
Aggregation.limit(); 에 넣은 데이터 만큼 출력을 해준다
* Aggregation - Method
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
public void findData(String key, String value) {
Criteria criteria = new Criteria(key);
criteria.is(value);
// 검색하기
MatchOperation match = Aggregation.match(criteria);
// 정렬하기
SortOperation sort = Aggregation.sort(Sort.Direction.DESC, "_id");
// 건너뛰기
SkipOperation skip = Aggregation.skip(5);
// 지정한 수 만큼 가져오기
LimitOperation limit = Aggregation.limit(2);
Aggregation aggregation = Aggregation.newAggregation(match,sort,skip,limit);
AggregationResults<MongoTestVO> result = mongoTemplate.aggregate(aggregation, "person", MongoTestVO.class);
List<MongoTestVO> dataList = result.getMappedResults();
for (MongoTestVO mongoTestVO : dataList) {
System.out.println(mongoTestVO.getName());
System.out.println(mongoTestVO.getAddress());
System.out.println(mongoTestVO.getId());
}
}
|
cs |
@ Paging
위의 findData를 그대로 복사해서 pagingData로 변경을 해서 Paging을 해본다
Paging을 위해서 파라미터를 pageNo을 하나 더 가져온 후 skip을 수정한다
위와 같이 main에서 2페이지를 넣으면 아래와 같이 180~189번의 둘리가 나온다
또한 1을 넣으면 190~199가 나오게 된다
페이지 번호로 10개씩 페이징 목록을 가져오는 것을 알 수 있다
*Paging - Method
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
private void pagingData(String key, String value, int pageNo) {
Criteria criteria = new Criteria(key);
criteria.is(value);
MatchOperation match = Aggregation.match(criteria);
// 정렬
SortOperation sort = Aggregation.sort(Sort.Direction.DESC, "_id");
// 건너뛰기
SkipOperation skip = Aggregation.skip((pageNo - 1) * 10);
// 지정한 수 만큼 가져오기
LimitOperation limit = Aggregation.limit(10);
Aggregation aggregation = Aggregation.newAggregation(match, sort, skip, limit);
AggregationResults<MongoTestVO> result = mongoTemplate.aggregate(aggregation, "person", MongoTestVO.class);
List<MongoTestVO> dataList = result.getMappedResults();
for (MongoTestVO mongoTestVO : dataList) {
System.out.println("ID " + mongoTestVO.getId());
System.out.println("Name " + mongoTestVO.getName());
System.out.println("Address " + mongoTestVO.getAddress());
}
}
|
cs |
'[ Developer ] > MongoDB' 카테고리의 다른 글
[MongoDB] 몽고디비 이용한 간단 웹 메모장 (0) | 2016.07.06 |
---|---|
[MongoDB] 몽고디비 스프링 Aggregation Group (0) | 2016.07.04 |
[MongoDB] 몽고디비 스프링 Find (0) | 2016.07.03 |
[MongoDB] 몽고디비 스프링 Update (0) | 2016.07.03 |
[MongoDB] 몽고디비 스프링 삭제 Delete (0) | 2016.07.02 |