$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 쿼리보다 성능이 좋지 않을 수 있습니다. 쿼리 선택성을 참조하세요.