$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 배포서버에 로드하는 방법에 대한 자세한 내용은 샘플 데이터 세트 로드를 참조하세요. 샘플 데이터베이스를 수정한 경우 이 페이지의 예시를 실행 하려면 데이터베이스를 제거하고 다시 만들어야 할 수 있습니다.
일치하지 않는 문서에서 선택
다음 예시 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 } )
배열에 없는 요소에서 선택
다음 예시 genres 배열 에 "Drama" 이 없는 영화의 exclude 필드 true 로 설정합니다.
db.movies.updateMany( { genres: { $nin: [ "Drama" ] } }, { $set: { exclude: true } } )
updateMany()는 $nin 문서 에 와 일치하는 필드 포함되어 있지 않은 경우에도 문서 선택합니다.
부등호 연산자 $nin은 인덱스의 많은 부분과 일치하는 경우가 많으므로 선택성이 그다지 높지 않습니다. 따라서 대부분의 경우 인덱스가 있는 $nin 쿼리는 컬렉션의 모든 문서를 스캔해야 하는 $nin 쿼리보다 성능이 좋지 않을 수 있습니다. 선택적 쿼리 만들기를 참조하세요.