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

MongoDB에서 문서를 삭제하는 방법 – remove() 메서드 완벽 가이드

MongoDB에서 문서 삭제하기

MongoDB에서 컬렉션(collection)에 저장된 문서(document)를 삭제하려면 remove() 메서드를 사용합니다. 이 글에서는 실제 예제를 통해 문서를 삽입하고, 조회한 뒤, 특정 조건에 맞는 문서를 삭제하는 전체 과정을 단계별로 살펴보겠습니다.

1단계: 컬렉션 생성 및 문서 삽입

먼저 insertOne() 메서드를 사용해 'demo79'라는 컬렉션에 여러 개의 문서를 삽입합니다.

> db.demo79.insertOne({"Name":"Chris"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e2bdb2271bf0181ecc42293")
}
> db.demo79.insertOne({"Name":"David"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e2bdb2671bf0181ecc42294")
}
> db.demo79.insertOne({"Name":"Bob"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e2bdb2971bf0181ecc42295")
}
> db.demo79.insertOne({"Name":"Mike"});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e2bdb2c71bf0181ecc42296")
}

2단계: find()로 전체 문서 조회하기

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

> db.demo79.find();

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

{ "_id" : ObjectId("5e2bdb2271bf0181ecc42293"), "Name" : "Chris" }
{ "_id" : ObjectId("5e2bdb2671bf0181ecc42294"), "Name" : "David" }
{ "_id" : ObjectId("5e2bdb2971bf0181ecc42295"), "Name" : "Bob" }
{ "_id" : ObjectId("5e2bdb2c71bf0181ecc42296"), "Name" : "Mike" }

3단계: remove()로 문서 삭제하기

이제 MongoDB에서 문서를 삭제하는 핵심 쿼리입니다. 아래와 같이 remove() 메서드에 삭제할 문서의 조건을 전달하면 해당 조건과 일치하는 문서가 삭제됩니다. 여기서는 이름이 'Bob'인 문서를 삭제해 보겠습니다.

> db.demo79.remove({"Name":"Bob"});
WriteResult({ "nRemoved" : 1 })

nRemoved : 1이라는 결과는 하나의 문서가 성공적으로 삭제되었음을 의미합니다.

4단계: 삭제 결과 확인하기

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

> db.demo79.find();

실행 결과를 보면 'Bob' 문서가 사라지고 나머지 세 개의 문서만 남아 있는 것을 확인할 수 있습니다. 문서가 성공적으로 삭제된 것입니다.

{ "_id" : ObjectId("5e2bdb2271bf0181ecc42293"), "Name" : "Chris" }
{ "_id" : ObjectId("5e2bdb2671bf0181ecc42294"), "Name" : "David" }
{ "_id" : ObjectId("5e2bdb2c71bf0181ecc42296"), "Name" : "Mike" }

참고: 최신 MongoDB 버전에서의 권장 방식

MongoDB 4.2 버전부터 remove() 메서드는 더 이상 권장되지 않으며(deprecated), 대신 deleteOne() 또는 deleteMany() 메서드를 사용하는 것이 좋습니다.

  • deleteOne(): 조건에 일치하는 첫 번째 문서 하나만 삭제합니다.
  • deleteMany(): 조건에 일치하는 모든 문서를 한 번에 삭제합니다.

예를 들어 위의 삭제 작업은 다음과 같이 작성할 수 있습니다.

> db.demo79.deleteOne({"Name":"Bob"});

조건 없이 remove({})를 호출하면 컬렉션의 모든 문서가 삭제되므로, 실무에서는 반드시 삭제 조건을 신중하게 지정해야 합니다.