MongoDB 컬렉션의 전체 데이터 삭제하기
MongoDB에서 컬렉션에 저장된 모든 문서를 한 번에 제거하려면 remove() 메서드에 빈 조건 객체 {}를 인자로 전달하면 됩니다. 이번 글에서는 실제 예제를 통해 컬렉션을 생성하고, 전체 데이터를 삭제하는 과정을 단계별로 살펴보겠습니다.
1단계: 샘플 컬렉션 및 문서 생성
먼저 insertOne() 메서드를 사용하여 demo309 컬렉션에 문서 두 개를 삽입합니다.
> db.demo309.insertOne({ "details":[ { "Name":"Chris" }, { "Name":"David" }, { "Name":"Adam" } ] } );
{
"acknowledged" : true,
"insertedId" : ObjectId("5e4eb71af8647eb59e562040")
}
> db.demo309.insertOne({ "details":[ { "Name":"David" }, { "Name":"Mike" }, { "Name":"Bob" } ] } );
{
"acknowledged" : true,
"insertedId" : ObjectId("5e4eb7cbf8647eb59e562041")
}2단계: find() 메서드로 문서 확인
find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 조회할 수 있습니다.
> db.demo309.find();
위 명령을 실행하면 다음과 같은 결과가 출력됩니다.
{ "_id" : ObjectId("5e4eb71af8647eb59e562040"), "details" : [ { "Name" : "Chris" }, { "Name" : "David" }, { "Name" : "Adam" } ] }
{ "_id" : ObjectId("5e4eb7cbf8647eb59e562041"), "details" : [ { "Name" : "David" }, { "Name" : "Mike" }, { "Name" : "Bob" } ] }현재 컬렉션에는 두 개의 문서가 저장되어 있는 것을 확인할 수 있습니다.
3단계: remove({})로 전체 데이터 삭제
이제 빈 조건 객체를 전달하는 remove() 쿼리를 실행하여 컬렉션의 모든 문서를 삭제합니다.
> db.demo309.remove({});실행 결과는 다음과 같습니다.
WriteResult({ "nRemoved" : 2 })결과의 nRemoved : 2는 두 개의 문서가 성공적으로 삭제되었음을 의미합니다. 이후 다시 find()를 실행하면 아무런 문서도 반환되지 않는 것을 확인할 수 있습니다.
참고: 최신 MongoDB 버전에서는 deleteMany() 권장
MongoDB 5.0 이상 버전에서는 remove() 메서드가 더 이상 권장되지 않으며(deprecated), 대신 deleteMany() 메서드를 사용하는 것이 좋습니다. 전체 문서를 삭제하려면 다음과 같이 작성합니다.
> db.demo309.deleteMany({});두 메서드 모두 조건 없이 빈 객체를 전달하면 컬렉션 내 모든 문서를 제거한다는 점은 동일합니다. 단, 컬렉션 자체와 인덱스 설정까지 완전히 제거하고 싶다면 drop() 메서드를 사용하는 것이 더 효율적입니다.