JAVA Developer Training
20. Student DB ( 학생 페이지별 조회, 원하는 형태로 데이터 넣기 ) 본문
학생목록을 10개씩 나누어 페이지화 , 검색할때 페이지 입력시 해당페이지의 학생들을 호출
public List<Student> selectStudentPage(int page) {
Bson projection = Projections.include("_id", "name", "stddate");
MongoCursor<Document> cursor = this.studentCollection.find().sort(Filters.eq("_id", 1)).projection(projection)
.skip((page - 1) * 10).limit(10).cursor();
// cursor == iterator 반복자
List<Student> list = new ArrayList<>();
while (cursor.hasNext()) {
Document doc = cursor.next();
Student student = new Student();
student.setStdid(doc.getLong("_id"));
student.setStddate(doc.getDate("stddate"));
student.setStdname(doc.getString("name"));
student.setStdmajor(doc.getString("major"));
list.add(student);
}
return list;
}
원하는 형태로 데이터 넣기
public List<Map<String, Object>> selectAggregate() {
// {_id : "$major", count : 1} //지금 형태
// {_id : "$major", count : {$sum : 1}} //원하는거
// 지금형태
// Document doc1 = new Document();
// doc1.append("_id", "$major");
// doc1.append("count", 1);
// 원하는 형태
Document doc2 = new Document();
doc2.append("_id", "$major");
doc2.append("count", new Document("$sum", 1));
MongoCursor<Document> cursor = studentCollection.aggregate(Arrays.asList(new Document("$group", doc2)))
.iterator();
List<Map<String, Object>> list = new ArrayList<>();
while (cursor.hasNext()) {
// Document{{_id= "" , count = 8}}로 나온다
Document doc3 = cursor.next();
Map<String, Object> map = new HashMap<String, Object>();
map.put("major", doc3.getString("_id"));
map.put("count", doc3.getInteger("count"));
list.add(map);
System.out.println(doc3.toString());
}
return list;
}
'트레이닝' 카테고리의 다른 글
22. CourseDB (0) | 2021.09.02 |
---|---|
21. ProfessorDB (0) | 2021.09.02 |
19. App.java ( StudentDB ) (0) | 2021.09.01 |
18. StudentDB (0) | 2021.09.01 |
17. Student, Professor, Course, Enrollcourse. java (0) | 2021.09.01 |