MongoDB에서 _id로 문서 삭제하기
MongoDB에서 특정 _id 값을 기준으로 문서를 삭제하려면 remove() 메서드를 사용할 수 있습니다. 기본 문법은 다음과 같습니다.
db.yourCollectionName.remove({_id: yourObjectId});1. 테스트용 컬렉션 생성
위 문법이 실제로 어떻게 동작하는지 이해하기 위해, 먼저 문서가 포함된 컬렉션을 생성해 보겠습니다.
> db.demo518.insertOne({"ClientName":"Chris"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e88b02db3fbf26334ef610e")
}
> db.demo518.insertOne({"ClientName":"Bob"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e88b030b3fbf26334ef610f")
}
> db.demo518.insertOne({"ClientName":"David"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e88b035b3fbf26334ef6110")
}2. find()로 전체 문서 조회하기
find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 확인할 수 있습니다.
> db.demo518.find();
위 쿼리는 다음과 같은 결과를 출력합니다.
{ "_id" : ObjectId("5e88b02db3fbf26334ef610e"), "ClientName" : "Chris" }
{ "_id" : ObjectId("5e88b030b3fbf26334ef610f"), "ClientName" : "Bob" }
{ "_id" : ObjectId("5e88b035b3fbf26334ef6110"), "ClientName" : "David" }3. _id를 조건으로 문서 삭제하기
이제 _id 값을 조건으로 지정하여 특정 문서를 삭제해 보겠습니다.
> db.demo518.remove({_id:ObjectId("5e88b02db3fbf26334ef610e")});
WriteResult({ "nRemoved" : 1 })nRemoved : 1은 한 개의 문서가 성공적으로 삭제되었음을 의미합니다.
4. 삭제 결과 확인하기
삭제 후 find() 메서드로 컬렉션을 다시 조회하여 결과를 확인할 수 있습니다.
> db.demo518.find();
실행 결과는 다음과 같습니다.
{ "_id" : ObjectId("5e88b030b3fbf26334ef610f"), "ClientName" : "Bob" }
{ "_id" : ObjectId("5e88b035b3fbf26334ef6110"), "ClientName" : "David" }출력 결과를 보면 _id가 5e88b02db3fbf26334ef610e인 "Chris" 문서가 정상적으로 삭제된 것을 확인할 수 있습니다.
참고: 최신 MongoDB 버전에서의 권장 방법
remove() 메서드는 현재 더 이상 권장되지 않으며(deprecated), 최신 MongoDB 버전에서는 용도에 따라 아래 메서드 사용을 권장합니다.
deleteOne(): 조건에 일치하는 문서 중 첫 번째 문서 하나만 삭제deleteMany(): 조건에 일치하는 모든 문서를 삭제
따라서 최신 환경에서는 다음과 같이 작성하는 것이 좋습니다.
db.demo518.deleteOne({_id:ObjectId("5e88b02db3fbf26334ef610e")});