$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 비교순서를 참조하십시오.
예시
이 페이지의 예제에서는 sample_mflix 샘플 데이터 세트 의 데이터를 사용합니다. 이 데이터 세트를 자체 관리형 MongoDB deployment 에 로드하는 방법에 대한 자세한 내용은 샘플 데이터 세트 로드를 참조하세요. 샘플 데이터베이스를 수정한 경우 이 페이지의 예제를 실행 하려면 데이터베이스를 삭제하고 다시 만들어야 할 수 있습니다.
일치하지 않는 문서에서 선택
다음 예시 runtime 이(가) 1000 분보다 길고 rated 이(가) [ "G", "PG" ]에 없는 영화를 반환합니다. $nin 는 rated 필드 포함하지 않는 문서와도 일치하므로 쿼리 평점 데이터를 사용할 수 없는 경우에도 영화를 반환합니다.
db.movies.find( { rated: { $nin: [ "G", "PG" ] }, runtime: { $gt: 1000 } }, { _id: 0, title: 1, year: 1, rated: 1 } )
[ { title: 'Centennial', year: 1978 }, { title: 'Baseball', year: 1994, rated: 'TV-PG' } ]
배열에 없는 요소에서 선택
다음 예시 genres 배열 에 "Drama" 이 없는 영화의 exclude 필드 true 로 설정합니다.
db.movies.updateMany( { genres: { $nin: [ "Drama" ] } }, { $set: { exclude: true } } )
{ acknowledged: true, insertedId: null, matchedCount: ..., modifiedCount: ..., upsertedCount: 0 }
updateMany()는 문서에 $nin과 일치하는 필드가 포함되어 있지 않은 경우에도 문서를 선택합니다.
부등호 연산자 $nin 은(는) 인덱스의 많은 부분과 일치하는 경우가 많으므로 선택성이 매우 낮습니다. 따라서 대부분의 경우 인덱스가 있는 $nin 쿼리 컬렉션의 모든 문서를 스캔해야 하는 $nin 쿼리보다 성능이 좋지 않을 수 있습니다. 선택적 쿼리 만들기도 참조하세요.