$not
정의
$not
$not
은 지정된<operator-expression>
에 대해 논리적NOT
작업을 수행하고<operator-expression>
과 일치하지 않는 문서를 선택합니다. 여기에는field
가 없는 문서도 포함됩니다.
호환성
다음 환경에서 호스팅되는 배포에 $not
사용할 수 있습니다.
MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
구문
$not
연산자의 형식은 다음과 같습니다.
{ field: { $not: { <operator-expression> } } }
행동
다음 예시 쿼리 를 살펴보겠습니다.
db.inventory.find( { price: { $not: { $gt: 1.99 } } } )
이 쿼리 는 inventory
컬렉션 에서 다음 조건 중 하나를 충족하는 모든 문서를 선택합니다.
price
필드 값이1.99
보다 작거나 같음price
필드 값이 숫자가 아닌 경우필드
price
이 존재하지 않습니다.
{ $not: { $gt: 1.99 } }
$lte
연산자와 다릅니다. { $lte: 1.99 }
는 price
필드가 있고 해당 값이 1.99
보다 작거나 같은 문서만 반환합니다.
$not
연산자를 다른 연산자 표현식과 함께 사용해야 합니다. 예를 들어 $not
을 사용하여 부등식 검사를 수행하려면 다음 구문을 사용하세요.
{ price: { $not: { $eq: 1.99 } } }
앞의 쿼리는 다음을 반환합니다.
{ price: { $ne: 1.99 } }
다음 $not
쿼리는 연산자 없이 필드를 비교하려고 하므로 유효하지 않습니다.
{ price: { $not: 1.99 } }
배열
배열 인수를 전달하면 $not
연산자가 예상치 못한 결과를 초래할 수 있습니다. 여러 개의 거짓 조건에 따라 문서를 일치시키려면 $nor
를 사용합니다.
정규 표현식
$not
연산자가 논리 NOT
연산을 수행할 수 있습니다.
정규 표현식 객체(즉,
/pattern/
)예를 들어, 다음 쿼리는
item
필드 값이p
문자로 시작하지 않는inventory
컬렉션의 모든 문서를 선택합니다.db.inventory.find( { item: { $not: /^p.*/ } } ) $regex
연산자 표현식예를 들어, 다음 쿼리는
item
필드 값이p
문자로 시작하지 않는inventory
컬렉션의 모든 문서를 선택합니다.db.inventory.find( { item: { $not: { $regex: "^p.*" } } } ) db.inventory.find( { item: { $not: { $regex: /^p.*/ } } } ) 드라이버 언어의 정규식 객체
예를 들어 다음 PyMongo 쿼리는 Python의
re.compile()
메서드를 사용하여 정규 표현식을 컴파일합니다.import re for noMatch in db.inventory.find( { "item": { "$not": re.compile("^p.*") } } ): print noMatch