정의
$ne$ne필드 값이 지정된 값과 같지 않은 문서를 선택합니다. 여기에는 해당 필드가 포함되지 않은 문서도 포함됩니다.다양한 BSON 값을 비교하려면 지정된 BSON 비교 순서를 참조하세요.
호환성
다음 환경에서 호스팅되는 배포에 $ne 사용할 수 있습니다.
MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
구문
$ne 연산자의 형식은 다음과 같습니다.
{ field: { $ne: value } }
참고
$ne 값이 null인 경우 비동등 필터를 참조하세요.
예시
이 페이지의 예제에서는 sample_mflix 샘플 데이터 세트 의 데이터를 사용합니다. 이 데이터 세트를 자체 관리형 MongoDB deployment 에 로드하는 방법에 대한 자세한 내용은 샘플 데이터 세트 로드를 참조하세요. 샘플 데이터베이스를 수정한 경우 이 페이지의 예제를 실행 하려면 데이터베이스를 삭제하고 다시 만들어야 할 수 있습니다.
동일하지 않은 문서 필드 일치시키기
다음 예시 runtime 이(가) 1000 분보다 크고 rated 이(가) "G"이(가) 같지 않은 영화를 반환합니다. $ne 는 rated 필드 포함하지 않는 문서와도 일치하므로 쿼리 평점 데이터를 사용할 수 없는 경우에도 영화를 반환합니다.
db.movies.find( { rated: { $ne: "G" }, runtime: { $gt: 1000 } }, { _id: 0, title: 1, runtime: 1, rated: 1 } )
[ { runtime: 1256, title: 'Centennial' }, { runtime: 1140, title: 'Baseball', rated: 'TV-PG' } ]
동일하지 않은 내장된 문서 필드 기반 업데이트
다음 예제에서는 내장된 문서의 필드에 대한 $ne 비교를 기반으로 highestRated 필드를 설정합니다. updateMany() 작업은 rating라는 하위 필드가 있는 내장된 문서인 imdb를 검색합니다. $set를 사용하여 rating의 값이 9.3과 같지 않거나 rating 하위 필드가 존재하지 않는 각 문서에서 highestRated 필드를 false로 업데이트합니다:
db.movies.updateMany( { "imdb.rating": { $ne: 9.3 } }, { $set: { "highestRated": false } } )
{ acknowledged: true, insertedId: null, matchedCount: ..., modifiedCount: ..., upsertedCount: 0 }
이 쿼리와 동일한 SQL:
UPDATE movies SET highestRated = false WHERE imdb_rating != 9.3
부등호 연산자 $ne 은(는) 인덱스의 많은 부분과 일치하는 경우가 많으므로 매우 선택적이지 않습니다. 따라서 대부분의 경우 인덱스 가 있는 $ne 쿼리 컬렉션 의 모든 문서를 스캔해야 하는 $ne 쿼리 보다 성능이 좋지 않을 수 있습니다. 선택적 쿼리 만들기도 참조하세요.
배열
배열을 비교할 때 $ne 은(는) 비교 값으로 스칼라를 전달하는지 배열 전달하는지에 따라 다르게 동작합니다.
스칼라 비교:
$ne필드 없는 문서를 포함하여 배열 의 요소로 스칼라 값이 존재하지 않는 문서와 일치합니다.정확한 배열 비교:
$ne은 요소 순서가 다르거나, 요소 수가 다르거나, 필드 누락된 문서를 포함하여 필드 배열 지정된 배열 과 동일하지 않은 문서와 일치합니다.
다음 예시에서는 런타임이 1000 분 이상인 동영상을 반환하여 각 동작을 보여줍니다.
스칼라 비교 사용
다음 예시 runtime 이(가) 1000 분보다 크고 "Drama" 이(가) genres 배열 의 요소가 아닌 영화를 반환합니다.
db.movies.find( { genres: { $ne: "Drama" }, runtime: { $gt: 1000 } }, { _id: 0, title: 1, genres: 1 } )
[ { genres: [ 'Documentary', 'History', 'Sport' ], title: 'Baseball' } ]
정확한 배열 비교 사용
다음 예시 runtime 시간이 1000 분보다 크고 genres 배열 [ "Drama" ] 와 정확히 같지 않은 영화를 반환합니다. 스칼라 비교와 달리 Centennial (genres: [ "Action", "Adventure", "Drama" ] 포함)는 배열 [ "Drama" ]와 동일하지 않기 때문에 일치합니다.
db.movies.find( { genres: { $ne: [ "Drama" ] }, runtime: { $gt: 1000 } }, { _id: 0, title: 1, genres: 1 } )
[ { genres: [ 'Action', 'Adventure', 'Drama' ], title: 'Centennial' }, { genres: [ 'Documentary', 'History', 'Sport' ], title: 'Baseball' } ]