MongoDB를 사용하다 보면 컬렉션(collection)의 이름을 변경해야 하는 경우가 종종 발생합니다. 이럴 때 renameCollection() 메서드를 사용하면 복잡한 데이터 마이그레이션 없이도 손쉽게 컬렉션 이름을 바꿀 수 있습니다. 이 글에서는 실제 예제와 함께 컬렉션 이름을 변경하는 전체 과정을 단계별로 알아보겠습니다.
renameCollection() 기본 문법
MongoDB에서 컬렉션 이름을 변경하는 기본 문법은 다음과 같습니다.
db.yourOldCollectionName.renameCollection("yourNewCollectionName");기존 컬렉션 이름에 renameCollection()을 호출하고, 인자로 새로운 컬렉션 이름을 문자열로 넘겨주기만 하면 됩니다.
1단계: 테스트용 컬렉션 및 문서 생성
먼저 이름을 변경할 컬렉션을 만들고 문서(document)를 몇 개 삽입해 보겠습니다. 다음 쿼리를 순서대로 실행합니다.
> db.savingInformationDemo.insertOne({"StudentName":"Larry"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c9cb44da629b87623db1b07")
}
> db.savingInformationDemo.insertOne({"StudentName":"John"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c9cb45da629b87623db1b08")
}
> db.savingInformationDemo.insertOne({"StudentName":"Mike"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c9cb461a629b87623db1b09")
}
> db.savingInformationDemo.insertOne({"StudentName":"Sam"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5c9cb465a629b87623db1b0a")
}위 쿼리는 savingInformationDemo라는 컬렉션에 학생 이름이 담긴 문서 4개를 삽입합니다. 모든 삽입 작업이 성공적으로 처리되었음을 acknowledged: true 응답으로 확인할 수 있습니다.
2단계: 기존 문서 조회하기
컬렉션 이름을 변경하기 전에, find() 메서드를 사용해 저장된 모든 문서를 먼저 확인해 보겠습니다.
> db.savingInformationDemo.find().pretty();
위 쿼리를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
{ "_id" : ObjectId("5c9cb44da629b87623db1b07"), "StudentName" : "Larry" }
{ "_id" : ObjectId("5c9cb45da629b87623db1b08"), "StudentName" : "John" }
{ "_id" : ObjectId("5c9cb461a629b87623db1b09"), "StudentName" : "Mike" }
{ "_id" : ObjectId("5c9cb465a629b87623db1b0a"), "StudentName" : "Sam" }총 4개의 문서가 정상적으로 저장되어 있는 것을 확인했습니다.
3단계: 컬렉션 이름 변경하기
이제 renameCollection() 메서드를 사용해 컬렉션 이름을 savingInformationDemo에서 saveStudentInformation으로 변경해 보겠습니다.
> db.savingInformationDemo.renameCollection("saveStudentInformation");실행 결과는 다음과 같습니다.
{ "ok" : 1 }{ "ok" : 1 } 응답은 컬렉션 이름이 성공적으로 변경되었음을 의미합니다.
4단계: 새 컬렉션 이름으로 문서 확인하기
마지막으로, 변경된 컬렉션 이름으로 문서들이 그대로 유지되고 있는지 확인해 보겠습니다.
> db.saveStudentInformation.find();
실행 결과는 다음과 같습니다.
{ "_id" : ObjectId("5c9cb44da629b87623db1b07"), "StudentName" : "Larry" }
{ "_id" : ObjectId("5c9cb45da629b87623db1b08"), "StudentName" : "John" }
{ "_id" : ObjectId("5c9cb461a629b87623db1b09"), "StudentName" : "Mike" }
{ "_id" : ObjectId("5c9cb465a629b87623db1b0a"), "StudentName" : "Sam" }새로운 컬렉션 이름인 saveStudentInformation으로 조회했을 때 기존 문서 4개가 그대로 조회되는 것을 확인할 수 있습니다. 이처럼 renameCollection()은 데이터를 복사하지 않고 컬렉션의 메타데이터만 수정하기 때문에 매우 빠르게 동작한다는 장점이 있습니다.