Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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 31
Archives
Today
Total
관리 메뉴

JAVA Developer Training

20. Student DB ( 학생 페이지별 조회, 원하는 형태로 데이터 넣기 ) 본문

트레이닝

20. Student DB ( 학생 페이지별 조회, 원하는 형태로 데이터 넣기 )

Romenest 2021. 9. 2. 14:52

학생목록을 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