[Java] MongoDB에서 콜렉션 삭제(Collection Drop)하기

    Pom.xml

    <dependency>
    	<groupId>org.springframework.data</groupId>
    	<artifactId>spring-data-mongodb</artifactId>
    	<version>1.10.3.RELEASE</version>
    </dependency>

    spring-data-mongodb 라이브러리를 설치

     

    임시로 만든 test 콜렉션

    임시로 만든 test

     

    임시로 test 콜렉션을 생성한 후, 아래와 같이 콜렉션을 드랍하는 메소드를 만들었다.

     

    콜렉션을 삭제하기 위한 프로그램 예제

    /**
     * 콜렉션을 드랍한다
     * @param collectionNm
     * @return
     */
    public int dropCollection(String collectionNm) {
    	MongoClient mongoClient = null;
    	int rc = 0;
    
    	try {
    		mongoClient = getMongoConnectionStg();
    		DB database = mongoClient.getDB(mongoDbNm);
    		database.getCollection(collectionNm).drop();
    	} catch (Exception e) {
    		LOGGER.error("dropCollection : " + e.getMessage());
    		e.printStackTrace();
    		rc = -1;
    	} finally {
    		if(mongoClient != null) {
    			mongoClient.close();
    		}
    	}
    
    	return rc;
    }
    
    
    /**
     * MongoDB의 커넥션 획득
     * 
     * @return
     * @throws UnknownHostException 
    */
    public MongoClient getMongoConnectionStg () throws UnknownHostException {
    	return new MongoClient("localhost", 27017);
    }

     

    MongoDB 예제는 위와 같이 JDBC 개발에 친숙한 사용자들은 금방 개발할 수 있게 API가 잘되어 있는 것 같다. 드롭하는 것도 콜렉션을 get한 상태에서 drop을 할 수 있다. 

    int status = mongoDAO.dropCollection("test");
    System.out.println("status => " + status);

    위와 같이 호출 한 후 프로그램을 실행하면

    status => 0

    이와같이 0값이 떨어지면서 성공하게 된다.

     

    콜렉션이 삭제된 것을 확인할 수 있음

     

    그러면 위 예제에서 콜렉션이 없을 경우 또 호출을 하게 되면, -1값이 떨어지게 되는 것일까? 정답은 NO이다. 결국 콜렉션이 정상적으로 삭제된 것을 알기 위해서는 하나의 메소드를 추가해 본다.(이 부분을 테스트하기가 힘들었음...) 물론 대부분은 catch단계로 넘어가겠지만 혹시 모르니...

     

    콜렉션 존재 여부 추가

    /**
     * 콜렉션을 드랍한다
     * @param collectionNm
     * @return
     */
    public int dropCollection(String collectionNm) {
    	MongoClient mongoClient = null;
    	int rc = 0;
    
    	try {
    		mongoClient = getMongoConnectionStg();
    		DB database = mongoClient.getDB(mongoDbNm);
    		database.getCollection(collectionNm).drop();
    		
    		if(database.collectionExists(collectionNm)) {
    			rc = -1;
    		}
    	} catch (Exception e) {
    		LOGGER.error("dropCollection : " + e.getMessage());
    		e.printStackTrace();
    		rc = -1;
    	} finally {
    		if(mongoClient != null) {
    			mongoClient.close();
    		}
    	}
    
    	return rc;
    }

    위 소스를 보면, database.collectionExists를 추가하여 drop을 하였는데도 값이 존재한다면 바로 아래 단계에서 rc에 -1값을 대입해서 호출하는 단계에서 알 수 있게 만들었다. 개발자는 추후 그에 따른 행동(로깅처리를 한다던지...)을 하면 될 것이다.

     

     

     

     

     

     

     

     

    반응형

    댓글

    Designed by JB FACTORY