정의
호환성
다음 환경에서 호스팅되는 배포에 $ne 사용할 수 있습니다.
- MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
구문
$ne 연산자의 형식은 다음과 같습니다.
{ field: { $ne: value } }참고
$ne 값이 null인 경우 비동등 필터를 참조하세요.
행동
유형 괄호 적용
부등호 연산자($gt, $gte, $lt, $lte)와 달리 $ne는 유형 브래키팅을 사용하지 않습니다. 대신 값의 유형에 관계없이 필드 값이 지정된 값과 같지 않은 문서를 일치시킵니다.
예시, { a: { $ne: 2 } }은(는) a이(가) string인 문서와도 일치합니다.
배열 비교
배열을 비교할 때 $ne 은(는) 비교 값으로 스칼라를 전달하는지 배열 전달하는지에 따라 다르게 동작합니다.
스칼라 비교:
$ne필드 없는 문서를 포함하여 배열 의 요소로 스칼라 값이 존재하지 않는 문서와 일치합니다.정확한 배열 비교:
$ne은 요소 순서가 다르거나, 요소 수가 다르거나, 필드 누락된 문서를 포함하여 필드 배열 지정된 배열 과 동일하지 않은 문서와 일치합니다.
예시
이 페이지의 예시는 sample_mflix 데이터 세트의 데이터를 사용합니다. 이 데이터 세트를 자체 관리형 MongoDB 배포서버에 로드하는 방법에 대한 자세한 내용은 샘플 데이터세트 로드를 참조하세요. 샘플 데이터베이스를 수정한 경우, 이 페이지의 예시를 실행하려면 데이터베이스를 제거하고 다시 생성해야 할 수 있습니다.
동일하지 않은 문서 필드 일치시키기
다음 예시 runtime 이(가) 1000 분보다 크고 rated 이(가) "G"이(가) 같지 않은 영화를 반환합니다. $ne 는 rated 필드 포함하지 않는 문서와도 일치하므로 쿼리 평점 데이터를 사용할 수 없는 경우에도 영화를 반환합니다.
db.movies.find( { rated: { $ne: "G" }, runtime: { $gt: 1000 } }, { _id: 0, title: 1, runtime: 1, rated: 1 })동일하지 않은 내장된 문서 필드 기반 업데이트
다음 예제에서는 내장된 문서의 필드에 대한 $ne 비교를 기반으로 highestRated 필드를 설정합니다. updateMany() 작업은 rating라는 하위 필드가 있는 내장된 문서인 imdb를 검색합니다. $set를 사용하여 rating의 값이 9.3과 같지 않거나 rating 하위 필드가 존재하지 않는 각 문서에서 highestRated 필드를 false로 업데이트합니다:
db.movies.updateMany( { "imdb.rating": { $ne: 9.3 } }, { $set: { "highestRated": false } })이 쿼리와 동일한 SQL:
UPDATE movies SET highestRated = false WHERE imdb_rating != 9.3부등호 연산자 $ne 은(는) 인덱스의 많은 부분과 일치하는 경우가 많으므로 매우 선택적이지 않습니다. 따라서 대부분의 경우 인덱스 가 있는 $ne 쿼리 컬렉션 의 모든 문서를 스캔해야 하는 $ne 쿼리 보다 성능이 좋지 않을 수 있습니다. 선택적 쿼리 만들기도 참조하세요.
배열
다음 예시는 비교 값으로 스칼라를 전달하는지 배열을 전달하는지에 따라 $ne이(가) 어떻게 다르게 동작하는지 보여줍니다.
스칼라 비교 사용
다음 예시 runtime 이(가) 1000 분보다 크고 "Drama" 이(가) genres 배열 의 요소가 아닌 영화를 반환합니다.
db.movies.find( { genres: { $ne: "Drama" }, runtime: { $gt: 1000 } }, { _id: 0, title: 1, genres: 1 })정확한 배열 비교 사용
다음 예시 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 })