$unset
정의
$unset
$unset
연산자는 특정 필드를 삭제합니다.
호환성
다음 환경에서 호스팅되는 배포에 $unset
사용할 수 있습니다.
MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
구문
다음 구문을 고려하세요.
{ $unset: { <field1>: "", ... } }
$unset
표현식에 지정된 값(예: ""
)은 작업에 영향을 주지 않습니다.
내장된 문서나 배열에 <field>
기호를 지정하려면 점 표기법을사용하십시오.
행동
MongoDB 5.0부터 업데이트 연산자는 문자열 기반 이름이 있는 문서 필드를 사전순으로 처리합니다. 숫자 이름이 있는 필드는 숫자 순서대로 처리됩니다. 자세한 내용은 업데이트 운영자 동작을 참조하십시오.
필드가 존재하지 않으면 $unset
은 아무 작업도 수행하지 않습니다. (즉, 작업 없음)
배열 요소를 일치시키기 위해 $
와 함께 사용할 경우 $unset
은 배열에서 일치하는 요소를 제거하는 대신 일치하는 요소를 null
로 바꿉니다. 이 동작은 배열 크기와 요소 위치를 일관되게 유지합니다.
MongoDB 5.0부터 빈 피연산자 표현식( { }
)과 함께 $unset
과 같은 업데이트 연산자를 사용할 때 mongod
에서 더 이상 오류가 발생하지 않습니다. 업데이트가 비어 있으면 변경 사항이 없으며 oplog 항목이 생성되지 않습니다(즉, 작업이 작동하지 않음을 의미합니다).
예시
products
컬렉션을 생성합니다.
db.products.insertMany( [ { "item": "chisel", "sku": "C001", "quantity": 4, "instock": true }, { "item": "hammer", "sku": "unknown", "quantity": 3, "instock": true }, { "item": "nails", "sku": "unknown", "quantity": 100, "instock": true } ] )
sku
값이 unknown
인 products
컬렉션의 첫 번째 문서를 업데이트하십시오.
db.products.updateOne( { sku: "unknown" }, { $unset: { quantity: "", instock: "" } } )
updateOne()
은 $unset
연산자를 사용하여 다음을 수행합니다.
quantity
필드 제거instock
필드 제거
{ item: 'chisel', sku: 'C001', quantity: 4, instock: true }, { item: 'hammer', sku: 'unknown' }, { item: 'nails', sku: 'unknown', quantity: 100, instock: true }