[Java] MongoDB에서 콜렉션 삭제(Collection Drop)하기
- DB/Mongo DB
- 2020. 12. 2.
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 콜렉션을 생성한 후, 아래와 같이 콜렉션을 드랍하는 메소드를 만들었다.
콜렉션을 삭제하기 위한 프로그램 예제
/**
* 콜렉션을 드랍한다
* @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값을 대입해서 호출하는 단계에서 알 수 있게 만들었다. 개발자는 추후 그에 따른 행동(로깅처리를 한다던지...)을 하면 될 것이다.
반응형
'DB > Mongo DB' 카테고리의 다른 글
MongoDB 클러스터링 운영 중, 서버 중지(Kill) 및 원복 후 느려짐 (0) | 2021.05.22 |
---|