MongoDB의 $unset 연산자
이 기사에서는 $unset
연산자가 MongoDB에서 작동하는 방식에 대해 설명합니다. 또한 이 연산자를 사용하여 MongoDB 컬렉션의 모든 문서에서 필드를 삭제하는 방법을 보여줍니다.
MongoDB의 $unset
연산자
$unset
은 엔티티에서 필드를 삭제하는 데 사용되는 연산자입니다. MongoDB의 update
메소드에 사용되며 해당 메소드에서 일치하는 항목이 없는 경우 아무 영향을 미치지 않습니다.
MongoDB 데이터베이스에 다음 문서가 있다고 가정합니다.
> db.employee.find().pretty()
{"_id":1, "name":"Alice", "salary": 1500}
{"_id":2, "name":"Bob", "salary": 2500}
{"_id":3, "name":"Jhon", "salary": 3500, "role":"Owner"}
{"_id":4, "name":"Grace", "salary": 4500}
문서에 4개의 엔터티가 있고 find()
메서드가 매개 변수 없이 사용됩니다. employee
컬렉션의 모든 엔터티를 반환하고 pretty()
는 형식이 지정된 방식으로 엔터티를 인쇄하는 데 사용됩니다.
이제 어떤 이유로 역할
필드를 표시하고 싶지 않다고 가정해 보겠습니다. 따라서 행에서 삭제해야 합니다.
쿼리는 다음과 같아야 합니다.
> db.employee.update({_id:3}, {$unset : {"role":""}} )
> db.employee.find().pretty()
{"_id":1, "name":"Alice", "salary": 1500}
{"_id":2, "name":"Bob", "salary": 2500}
{"_id":3, "name":"Jhon", "salary": 3500}
{"_id":4, "name":"Grace", "salary": 4500}
이제 id = 3
인 첫 번째 일치 문서에서 role
필드를 삭제합니다.
multiple
의 줄임말인 multi
라는 또 다른 옵션은 기본적으로 false
값을 가집니다.
값이 true
인 경우 일치하는 모든 문서에 대한 update
쿼리에 영향을 미칩니다.
$unset
연산자를 사용하여 MongoDB의 모든 문서에서 필드 삭제
MongoDB 컬렉션의 모든 문서에서 salary
필드를 제거하라는 요청을 받았다고 가정해 보겠습니다. 각 ID에 대해 update
명령을 한 번 사용하면 시간이 더 오래 걸립니다.
오히려 다음과 같이 해야 합니다.
> db.employee.update({}, {$unset:{"salary": ""}}, {multi: true})
> db.employee.find().pretty()
{"_id":1, "name":"Alice" }
{"_id":2, "name":"Bob" }
{"_id":3, "name":"Jhon" }
{"_id":4, "name":"Grace" }
update
쿼리에서 빈 개체를 사용하고 multi
에 true
를 입력했습니다. 기본적으로 {}
는 개체의 모든 문서를 선택하고 {multi: true}
는 update
메서드에서 일치하는 모든 문서에 영향을 미칩니다.
기본 형식은 다음과 같습니다(공식 문서 참조).
db.collection.updateOne(<filter>, <update>, <options>)
db.collection.updateMany(<filter>, <update>, <options>)
db.collection.replaceOne(<filter>, <update>, <options>)
update
메서드에서 $unset
연산자를 사용할 수 있으며 options
에서 multi
를 사용할 수 있습니다.
공식 문서에서 $unset
연산자에 대해 자세히 알아보세요.