Computer >> 컴퓨터 >  >> 프로그래밍 >> MongoDB

MongoDB에서 단일 문서만 삭제하는 방법 (remove & deleteOne)

MongoDB에서 조건에 일치하는 문서 중 딱 하나만 삭제하고 싶다면 remove() 메서드를 사용할 수 있습니다. 이 글에서는 실제 예제를 통해 컬렉션 생성, 문서 삽입, 단일 문서 삭제까지 전체 과정을 단계별로 살펴보겠습니다.

1. 샘플 컬렉션 생성 및 문서 삽입

먼저 insertOne() 메서드를 사용해 demo165 컬렉션에 클라이언트 정보 문서 세 개를 삽입합니다.

> db.demo165.insertOne({"ClientId":101,"ClientName":"Chris","ClientAge":34});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e36895c9e4f06af551997cc")
}
> db.demo165.insertOne({"ClientId":102,"ClientName":"Bob","ClientAge":32});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e3689659e4f06af551997cd")
}
> db.demo165.insertOne({"ClientId":103,"ClientName":"David","ClientAge":35});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e36896d9e4f06af551997ce")
}

2. find()로 전체 문서 조회하기

find() 메서드를 실행하면 컬렉션에 저장된 모든 문서를 확인할 수 있습니다.

> db.demo165.find();

위 쿼리는 다음과 같은 결과를 출력합니다.

{ "_id" : ObjectId("5e36895c9e4f06af551997cc"), "ClientId" : 101, "ClientName" : "Chris", "ClientAge" : 34 }
{ "_id" : ObjectId("5e3689659e4f06af551997cd"), "ClientId" : 102, "ClientName" : "Bob", "ClientAge" : 32 }
{ "_id" : ObjectId("5e36896d9e4f06af551997ce"), "ClientId" : 103, "ClientName" : "David", "ClientAge" : 35 }

3. remove()로 단일 문서 삭제하기

이제 ClientId가 102인 문서를 삭제해 보겠습니다.

> db.demo165.remove({"ClientId":102});
WriteResult({ "nRemoved" : 1 })

실행 결과에서 nRemoved : 1이 표시되는데, 이는 정확히 한 개의 문서가 성공적으로 삭제되었음을 의미합니다.

4. 삭제 후 결과 확인하기

삭제가 정상적으로 처리되었는지 확인하려면 다시 find() 메서드를 실행합니다.

> db.demo165.find();

출력 결과는 다음과 같습니다.

{ "_id" : ObjectId("5e36895c9e4f06af551997cc"), "ClientId" : 101, "ClientName" : "Chris", "ClientAge" : 34 }
{ "_id" : ObjectId("5e36896d9e4f06af551997ce"), "ClientId" : 103, "ClientName" : "David", "ClientAge" : 35 }

ClientId가 102였던 Bob의 문서가 사라지고 나머지 두 개의 문서만 남아 있는 것을 확인할 수 있습니다.

참고: 최신 버전에서는 deleteOne() 사용 권장

MongoDB 3.2부터 remove()는 공식적으로 사용이 권장되지 않으며(deprecated), 대신 deleteOne() 또는 deleteMany() 사용을 권장합니다. 단일 문서를 삭제할 때는 아래와 같이 작성하면 됩니다.

> db.demo165.deleteOne({"ClientId":102});

deleteOne()은 조건에 일치하는 문서가 여러 개 있더라도 항상 첫 번째 문서 하나만 삭제하므로, 의도치 않은 대량 삭제를 방지할 수 있어 더욱 안전한 방법입니다.