MongoDB에서 특정 문서 제거하기
MongoDB에서 특정 문서를 삭제하려면 remove() 메서드를 사용하면 됩니다. 이 메서드에 조건을 전달하면 해당 조건과 일치하는 문서만 컬렉션에서 제거됩니다.
먼저 예제로 사용할 문서들이 포함된 컬렉션을 생성해 보겠습니다.
> db.demo56.insertOne({"Name":"Chris"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e272e0bcfb11e5c34d89917")
}
> db.demo56.insertOne({"Name":"David"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e272e10cfb11e5c34d89918")
}
> db.demo56.insertOne({"Name":"Bob"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e272e13cfb11e5c34d89919")
}컬렉션의 모든 문서 조회하기
find() 메서드를 사용하면 컬렉션에 저장된 모든 문서를 확인할 수 있습니다.
> db.demo56.find();
위 쿼리는 다음과 같은 결과를 출력합니다.
{ "_id" : ObjectId("5e272e0bcfb11e5c34d89917"), "Name" : "Chris" }
{ "_id" : ObjectId("5e272e10cfb11e5c34d89918"), "Name" : "David" }
{ "_id" : ObjectId("5e272e13cfb11e5c34d89919"), "Name" : "Bob" }특정 문서 제거 쿼리 실행
이제 _id 값을 조건으로 지정하여 특정 문서 하나만 제거해 보겠습니다. 아래 쿼리는 ObjectId가 5e272e10cfb11e5c34d89918인 문서, 즉 Name이 "David"인 문서를 삭제합니다.
> db.demo56.remove({_id:ObjectId("5e272e10cfb11e5c34d89918")});
WriteResult({ "nRemoved" : 1 })실행 결과의 nRemoved : 1은 한 개의 문서가 성공적으로 삭제되었음을 의미합니다.
삭제 후 결과 확인
다시 find() 메서드를 실행하여 문서가 정상적으로 제거되었는지 확인합니다.
> db.demo56.find();
출력 결과에서 "David" 문서가 사라진 것을 확인할 수 있습니다.
{ "_id" : ObjectId("5e272e0bcfb11e5c34d89917"), "Name" : "Chris" }
{ "_id" : ObjectId("5e272e13cfb11e5c34d89919"), "Name" : "Bob" }참고: 최신 버전에서 권장되는 방법
MongoDB 4.x부터는 remove() 메서드가 더 이상 권장되지 않으며(deprecated), 대신 목적에 맞는 다음 메서드를 사용하는 것이 좋습니다.
- deleteOne(): 조건과 일치하는 첫 번째 문서 하나만 삭제
- deleteMany(): 조건과 일치하는 모든 문서를 삭제
예를 들어 위와 동일한 작업은 다음과 같이 수행할 수 있습니다.
> db.demo56.deleteOne({_id:ObjectId("5e272e10cfb11e5c34d89918")});조건 없이 remove()나 deleteMany()를 호출하면 컬렉션의 모든 문서가 삭제되므로, 실제 운영 환경에서는 반드시 삭제 조건을 신중하게 지정해야 합니다.