본문 바로가기
[ Developer ]/MongoDB

[MongoDB] 몽고디비 스프링 Find

by 김현섭. 2016. 7. 3.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
Spring-Data-MongoDB Find 검색하기

@ Find One
검색을 하는 Find One을 구현해 보기 위해서 메소드를 작성한다

이전에 했던 Update와 비슷하게 key와 Value를 가지고 Criteria로 검색 후 query에 넣는다


query 조건을 MongoTestVO.class 타입으로 "person"에서 검색을 하겠다는 메소드다
그렇기 때문에 MongoTestVO 객체로 받아주면 된다 그러고 출력을 해본다

이제는 메인을 이용해서 Key와 value를 보내보자


그럼 콘솔에 결과가 뜨게 된다


Id를 보면 Robomongo에 있는 제일 위에 있는 값의 ID와 같다


가장 위에 있기에 1개를 가져올 때 그것을 가져오는 것이다 
Update First와 비슷하다고 볼 수 있다

*Find One - Main
1
2
3
4
5
6
7
8
public static void main(String[] args) {
        MongoTest mongoTest = new MongoTest();
        
        System.out.println(mongoTest.mongoTemplate);
 
        // Find One
        mongoTest.findData("name""도우너");        
}
cs

*Find One - Method
1
2
3
4
5
6
7
8
9
10
11
12
    private void findData(String key, String value) {
        
        Criteria criteria = new Criteria(key);
        criteria.is(value);
        
        Query query = new Query(criteria);
        
        MongoTestVO mongoTestVO = mongoTemplate.findOne(query, MongoTestVO.class"person");
        System.out.println("ID " + mongoTestVO.getId());
        System.out.println("Name " + mongoTestVO.getName());
        System.out.println("Address " + mongoTestVO.getAddress());
    }
cs

@ Find 
find를 이용하여 전부를 가져오려고 한다
find One과 로직은 비슷하다


Find one과 Find의 차이점은 리턴 타입이다 
Find는 List로 리턴타입을 갖기 때문에 List를 선언해서 받아줘야 한다


List로 받고 for를 이용해서 출력을 하면 된다
이제 메인에서 실행을 해본다


그렇다면 리스트로 결과가 나온 것을 볼 수 있다


*Find - Main
1
2
3
4
5
6
7
8
9
public static void main(String[] args) {
        MongoTest mongoTest = new MongoTest();
        
        System.out.println(mongoTest.mongoTemplate);
        
        // Find
        mongoTest.findDatas("name""도우너");
        
    }
cs

*Find - Method
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    private void findDatas(String key, String value) {
        
        Criteria criteria = new Criteria(key);
        criteria.is(value);
        
        Query query = new Query(criteria);
        
        List<MongoTestVO> mongoTestListVO = mongoTemplate.find(query, MongoTestVO.class"person");
        
        for (MongoTestVO mongoTestVO : mongoTestListVO) {
            System.out.println("ID " + mongoTestVO.getId());
            System.out.println("Name " + mongoTestVO.getName());
            System.out.println("Address " + mongoTestVO.getAddress());
        }
    
    }
cs

*Like 검색
응용을 해서 이전에 반복으로 둘리를 넣었던 메소드를 이용해 데이터를 살리고
둘리로 시작되는 데이터들을 검색해보자


그런 후 메소드에서 criteria를 변경해준다


위에 메소드는 정규표현식을 이용해서 둘리로 시작되는 모든 것을 찾는것이다


여러 데이터들이 잘 나오는 것을 볼 수 있다