MongoDB에서 deleteMany()로 컬렉션의 모든 문서 삭제하기
MongoDB 컬렉션에 저장된 모든 문서를 한 번에 삭제하고 싶다면 deleteMany() 메서드를 사용하면 됩니다. 이 메서드에 빈 조건 객체({})를 전달하면 필터 조건 없이 컬렉션 내의 모든 문서가 삭제됩니다.
실제 동작 과정을 이해하기 위해, 먼저 컬렉션을 생성하고 몇 개의 문서를 삽입한 뒤 삭제하는 전체 흐름을 단계별로 살펴보겠습니다.
1단계: 컬렉션 생성 및 문서 삽입
먼저 'deleteDocumentsDemo'라는 컬렉션을 만들고 세 개의 문서를 삽입합니다:
> db.deleteDocumentsDemo.insert({"Name":"Larry","Age":23});
WriteResult({ "nInserted" : 1 })
> db.deleteDocumentsDemo.insert({"Name":"Mike","Age":21});
WriteResult({ "nInserted" : 1 })
> db.deleteDocumentsDemo.insert({"Name":"Sam","Age":24});
WriteResult({ "nInserted" : 1 })각 insert 명령이 실행될 때마다 nInserted : 1이 반환되는 것으로 보아 문서가 정상적으로 저장되었음을 확인할 수 있습니다.
2단계: 현재 저장된 문서 확인
이제 find() 메서드를 사용해 컬렉션에 있는 모든 문서를 조회해 보겠습니다:
> db.deleteDocumentsDemo.find().pretty();
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다:
{
"_id" : ObjectId("5c6ab0e064f3d70fcc914805"),
"Name" : "Larry",
"Age" : 23
}
{
"_id" : ObjectId("5c6ab0ef64f3d70fcc914806"),
"Name" : "Mike",
"Age" : 21
}
{
"_id" : ObjectId("5c6ab0f864f3d70fcc914807"),
"Name" : "Sam",
"Age" : 24
}총 3개의 문서(Larry, Mike, Sam)가 컬렉션에 저장되어 있는 것을 확인했습니다.
3단계: deleteMany()로 모든 문서 삭제
이제 빈 조건 객체를 인자로 전달하여 deleteMany() 메서드를 호출합니다:
> db.deleteDocumentsDemo.deleteMany({});실행 결과는 다음과 같습니다:
{ "acknowledged" : true, "deletedCount" : 3 }결과 분석
출력 결과를 보면 acknowledged : true는 요청이 성공적으로 처리되었음을 의미하고, deletedCount : 3은 3개의 문서가 삭제되었음을 나타냅니다. 즉, 'deleteDocumentsDemo' 컬렉션에는 이제 어떤 문서도 남아 있지 않으며, deleteMany() 메서드를 통해 모든 문서가 성공적으로 삭제된 것입니다.
참고 사항
deleteMany({})는 컬렉션의 문서만 삭제할 뿐 컬렉션 자체까지 제거하지는 않습니다. 만약 컬렉션 구조(인덱스 등)까지 완전히 제거하고 싶다면 drop() 메서드를 사용하는 것이 더 효율적입니다. 또한 대량의 데이터가 있는 컬렉션에서는 drop() 후 필요한 인덱스를 다시 생성하는 방식이 deleteMany({})보다 훨씬 빠른 성능을 보여줍니다.