$nin
$nin
$nin
다음의 경우 문서를 선택합니다.지정된 필드 값이 지정된 배열에 없는 경우
지정된 필드가 존재하지 않는 경우
호환성
다음 환경에서 호스팅되는 배포에 $nin
사용할 수 있습니다.
MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
구문
$nin
연산자의 형식은 다음과 같습니다.
{ field: { $nin: [ <value1>, <value2> ... <valueN> ] } }
field
에 배열이 포함된 경우 $nin
연산자는 field
에 지정된 배열의 값과 동일한 요소가 없는 배열이 포함된 문서를 선택합니다(예시: <value1>
, <value2>
등).
다양한 BSON types 값을 비교하려면 지정된 BSON 비교순서를 참조하십시오.
예시
inventory
컬렉션을 생성합니다.
db.inventory.insertMany( [ { "item": "Pens", "quantity": 350, "tags": [ "school", "office" ] }, { "item": "Erasers", "quantity": 15, "tags": [ "school", "home" ] }, { "item": "Maps", "tags": [ "office", "storage" ] }, { "item": "Books", "quantity": 5, "tags": [ "school", "storage", "home" ] } ] )
일치하지 않는 문서에서 선택
inventory
컬렉션에서 quantity
가 5나 15와 같지 않은 같지 않은 모든 문서를 선택하는 쿼리입니다.
이 쿼리는 quantity
필드가 없는 문서와도 일치합니다.
db.inventory.find( { quantity: { $nin: [ 5, 15 ] } }, { _id: 0 } )
출력 예시:
{ item: 'Pens', quantity: 350, tags: [ 'school', 'office' ] }, { item: 'Maps', tags: [ 'office', 'storage' ] }
배열에 없는 요소에서 선택
"school"
태그가 없는 문서의 경우 exclude
필드를 true
로 설정하세요.
db.inventory.updateMany( { tags: { $nin: [ "school" ] } }, { $set: { exclude: true } } )
updateMany()
는 문서에 $nin
과 일치하는 필드가 포함되어 있지 않은 경우에도 문서를 선택합니다.
부등식 연산자 $nin
는 덱스의 많은 부분과 일치하는 경우가 많으므로 선택성이 그다지 높지 않습니다. 따라서 대부분의 경우 인덱스가 있는 $nin
쿼리는 컬렉션의 모든 문서를 스캔해야 하는 $nin
쿼리보다 성능이 좋지 않을 수 있습니다. 쿼리 선택성을 참조하세요.