Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

$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.movies.find( { runtime: { $not: { $gt: 180 } } } )

이 예시에서는 movies 컬렉션의 모든 문서를 선택합니다.

  • runtime 필드 값이 180 보다 작거나 같습니다.

  • 필드 runtime 이 존재하지 않습니다.

{ $not: { $gt: 180 } } $lte 연산자와 다릅니다. { $lte: 180 }runtime 필드 있고 해당 값이 180보다 작거나 같은 문서만 반환합니다.

$not 연산자를 다른 연산자 표현식과 함께 사용하세요. 부등식 검사에 $not을 사용하려면 다음을 사용하세요.

{ runtime: { $not: { $eq: 120 } } }

앞의 쿼리는 다음을 반환합니다.

{ runtime: { $ne: 120 } }

다음 쿼리는 연산자 없이 필드를 비교하기 때문에 유효하지 않습니다:

{ price: { $not: 1.99 } }

$not 연산자를 배열과 함께 사용하면 예기치 않은 결과가 발생할 수 있습니다. 여러 개의 거짓 조건에 따라 문서를 일치시키려면 $nor를 사용합니다.

이 페이지의 예제에서는 sample_mflix 샘플 데이터 세트 의 데이터를 사용합니다. 이 데이터 세트를 자체 관리형 MongoDB deployment 에 로드하는 방법에 대한 자세한 내용은 샘플 데이터 세트 로드를 참조하세요. 샘플 데이터베이스를 수정한 경우 이 페이지의 예제를 실행 하려면 데이터베이스를 삭제하고 다시 만들어야 할 수 있습니다.

$not 논리적 NOT 작업을 지원합니다:

  • 정규 표현식 객체(예: /pattern/)

    다음 예시 runtime 시간이 1000 분보다 크고 title 이 문자 T 로 시작하지 않는 영화를 반환합니다. $nottitle 필드 포함하지 않는 문서와도 일치하므로, 쿼리 제목 데이터를 사용할 수 없는 경우에도 영화를 반환합니다.

    db.movies.find(
    { title: { $not: /^T/ }, runtime: { $gt: 1000 } },
    { _id: 0, title: 1, runtime: 1 }
    )
    [
    { title: 'Centennial', runtime: 1256 },
    { title: 'Baseball', runtime: 1140 }
    ]
  • $regex 연산자 표현식.

    다음 두 쿼리는 runtime 시간이 1000 분보다 크고 title 이 문자 T 로 시작하지 않는 영화를 반환합니다. 첫 번째 쿼리 문자열을 $regex에 전달합니다.

    db.movies.find(
    { title: { $not: { $regex: "^T" } }, runtime: { $gt: 1000 } },
    { _id: 0, title: 1, runtime: 1 }
    )
    [
    { title: 'Centennial', runtime: 1256 },
    { title: 'Baseball', runtime: 1140 }
    ]

    두 번째 쿼리 정규식 리터럴을 $regex에 전달합니다.

    db.movies.find(
    { title: { $not: { $regex: /^T/ } }, runtime: { $gt: 1000 } },
    { _id: 0, title: 1, runtime: 1 }
    )
    [
    { title: 'Centennial', runtime: 1256 },
    { title: 'Baseball', runtime: 1140 }
    ]
  • 드라이버 언어 정규 표현식 객체.

    예를 들어, 다음 PyMongo 쿼리는 Python의 re.compile() 메서드를 사용하여 정규식을 컴파일합니다.

    import re
    for noMatch in db.inventory.find( { "item": { "$not": re.compile("^p.*") } } ):
    print noMatch

돌아가기

$nor

이 페이지의 내용