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

MongoDB에서 _id 기준으로 문서 삭제하는 방법 완벽 가이드

MongoDB에서 _id 기준으로 문서 삭제하기

MongoDB에서 특정 _id 값을 기준으로 문서를 삭제하려면 다음과 같은 문법을 사용합니다.

db.yourCollectionName.remove({"_id":ObjectId("yourId")});

이제 실제 예제를 통해 단계별로 살펴보겠습니다.

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

먼저 다음 쿼리를 실행하여 문서가 포함된 컬렉션을 생성합니다.

> db.removeDocumentOnBasisOfId.insertOne({"UserName":"Larry","UserAge":23,"UserCountryName":"US"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c986f9f330fd0aa0d2fe4a3")
}
> db.removeDocumentOnBasisOfId.insertOne({"UserName":"Sam","UserAge":21,"UserCountryName":"UK"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c986fb4330fd0aa0d2fe4a4")
}
> db.removeDocumentOnBasisOfId.insertOne({"UserName":"Chris","UserAge":24,"UserCountryName":"US"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c986fc0330fd0aa0d2fe4a5")
}
> db.removeDocumentOnBasisOfId.insertOne({"UserName":"Robert","UserAge":26,"UserCountryName":"UK"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c986fcf330fd0aa0d2fe4a6")
}
> db.removeDocumentOnBasisOfId.insertOne({"UserName":"David","UserAge":28,"UserCountryName":"AUS"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c986fed330fd0aa0d2fe4a7")
}

2단계: 전체 문서 조회

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

> db.removeDocumentOnBasisOfId.find().pretty();

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

{
    "_id" : ObjectId("5c986f9f330fd0aa0d2fe4a3"),
    "UserName" : "Larry",
    "UserAge" : 23,
    "UserCountryName" : "US"
}
{
    "_id" : ObjectId("5c986fb4330fd0aa0d2fe4a4"),
    "UserName" : "Sam",
    "UserAge" : 21,
    "UserCountryName" : "UK"
}
{
    "_id" : ObjectId("5c986fc0330fd0aa0d2fe4a5"),
    "UserName" : "Chris",
    "UserAge" : 24,
    "UserCountryName" : "US"
}
{
    "_id" : ObjectId("5c986fcf330fd0aa0d2fe4a6"),
    "UserName" : "Robert",
    "UserAge" : 26,
    "UserCountryName" : "UK"
}
{
    "_id" : ObjectId("5c986fed330fd0aa0d2fe4a7"),
    "UserName" : "David",
    "UserAge" : 28,
    "UserCountryName" : "AUS"
}

3단계: _id를 기준으로 문서 삭제

다음은 _id를 기준으로 문서를 삭제하는 쿼리입니다.

> db.removeDocumentOnBasisOfId.remove({"_id":ObjectId("5c986fc0330fd0aa0d2fe4a5")});
WriteResult({ "nRemoved" : 1 })

위 예제에서는 Chris의 레코드를 해당 _id를 기준으로 삭제했습니다. 이제 컬렉션의 모든 문서를 다시 조회하여 문서가 실제로 삭제되었는지 확인해 보겠습니다.

> db.removeDocumentOnBasisOfId.find().pretty();

실행 결과는 다음과 같습니다.

{
    "_id" : ObjectId("5c986f9f330fd0aa0d2fe4a3"),
    "UserName" : "Larry",
    "UserAge" : 23,
    "UserCountryName" : "US"
}
{
    "_id" : ObjectId("5c986fb4330fd0aa0d2fe4a4"),
    "UserName" : "Sam",
    "UserAge" : 21,
    "UserCountryName" : "UK"
}
{
    "_id" : ObjectId("5c986fcf330fd0aa0d2fe4a6"),
    "UserName" : "Robert",
    "UserAge" : 26,
    "UserCountryName" : "UK"
}
{
    "_id" : ObjectId("5c986fed330fd0aa0d2fe4a7"),
    "UserName" : "David",
    "UserAge" : 28,
    "UserCountryName" : "AUS"
}

출력 결과에서 Chris의 문서가 사라진 것을 확인할 수 있습니다. 삭제 작업이 성공적으로 완료되었습니다.

참고: 최신 방식인 deleteOne() 사용 권장

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

> db.removeDocumentOnBasisOfId.deleteOne({"_id":ObjectId("5c986fc0330fd0aa0d2fe4a5")});
{ "acknowledged" : true, "deletedCount" : 1 }

deleteOne()은 조건에 일치하는 문서 하나만 삭제하며, 삭제된 문서의 개수를 deletedCount로 반환합니다. 조건에 맞는 모든 문서를 삭제하려면 deleteMany()를 사용하면 됩니다.