MongoDB에서 컬렉션의 특정 문서 하나를 삭제하려면 deleteOne() 메서드를 사용하면 됩니다. 이 메서드는 조건에 일치하는 문서가 여러 개 있더라도 가장 먼저 발견된 단 하나의 문서만 삭제한다는 점이 특징입니다.
1. 테스트용 컬렉션 생성 및 데이터 삽입
먼저 실습을 위해 컬렉션을 생성하고 몇 개의 문서를 삽입해 보겠습니다.
> 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 })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개의 문서가 정상적으로 저장된 것을 확인할 수 있습니다.
3. deleteOne()으로 문서 삭제하기
이제 deleteOne() 명령어를 사용해 보겠습니다. 이름에서 알 수 있듯이 이 메서드는 컬렉션에서 조건에 맞는 문서 중 단 하나만 삭제합니다. 아래 쿼리는 Name 필드 값이 "Larry"인 문서를 삭제합니다.
> db.deleteDocumentsDemo.deleteOne({"Name":"Larry"});실행 결과는 다음과 같습니다.
{ "acknowledged" : true, "deletedCount" : 1 }결과에서 deletedCount: 1은 하나의 문서가 성공적으로 삭제되었음을 의미합니다.
4. 삭제 결과 확인하기
find() 명령어로 남아 있는 문서를 다시 조회해 보겠습니다.
> db.deleteDocumentsDemo.find().pretty();
실행 결과는 다음과 같습니다.
{
"_id" : ObjectId("5c6ab0ef64f3d70fcc914806"),
"Name" : "Mike",
"Age" : 21
}
{ "_id" : ObjectId("5c6ab0f864f3d70fcc914807"), "Name" : "Sam", "Age" : 24 }위 출력 결과를 보면 Name이 "Larry"인 문서가 더 이상 존재하지 않는 것을 확인할 수 있습니다. 이처럼 deleteOne() 메서드는 조건에 일치하는 첫 번째 문서만 정확히 제거하므로, 실수로 여러 문서를 삭제하는 것을 방지할 수 있습니다.