정의
호환성
다음 환경에서 호스팅되는 배포에 $cond 사용할 수 있습니다.
MongoDB Atlas: 클라우드에서의 MongoDB 배포를 위한 완전 관리형 서비스
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
구문
$cond 표현식에는 다음 두 가지 구문 중 하나가 있습니다.
{ $cond: { if: <boolean-expression>, then: <true-case>, else: <false-case> } }
또는:
{ $cond: [ <boolean-expression>, <true-case>, <false-case> ] }
$cond에는 두 구문에 대해 세 개의 인수(if-then-else)가 모두 필요합니다.
<boolean-expression> 이(가) true(으)로 평가되면 $cond은(는) <true-case> 표현식의 값을 평가하고 반환합니다. 그렇지 않으면 $cond(이)가 <false-case> 표현식의 값을 평가하고 반환합니다.
예시
이 페이지의 예제에서는 sample_mflix 샘플 데이터 세트 의 데이터를 사용합니다. 이 데이터 세트를 자체 관리형 MongoDB deployment 에 로드하는 방법에 대한 자세한 내용은 샘플 데이터 세트 로드를 참조하세요. 샘플 데이터베이스를 수정한 경우 이 페이지의 예제를 실행 하려면 데이터베이스를 삭제하고 다시 만들어야 할 수 있습니다.
다음 집계 작업에서는 $cond 표현식 사용하여 각 영화에 임대료를 할당합니다. 이 연산은 imdb.rating 이(가) 9 이상인 영화의 가격을 5.99(으)로 책정합니다. 이 연산은 다른 모든 영화의 가격을 3.99로 책정합니다.
db.movies.aggregate( [ { $match: { runtime: { $gt: 1000 } } }, { $project: { title: 1, rentalPrice: { $cond: { if: { $gte: [ "$imdb.rating", 9 ] }, then: 5.99, else: 3.99 } } } } ] )
[ { _id: ..., title: 'Baseball', rentalPrice: 5.99 }, { _id: ..., title: 'Centennial', rentalPrice: 3.99 } ]
다음 작업은 $cond 표현식의 배열 구문을 사용하여 동일한 결과를 반환합니다.
db.movies.aggregate( [ { $match: { runtime: { $gt: 1000 } } }, { $project: { title: 1, rentalPrice: { $cond: [ { $gte: [ "$imdb.rating", 9 ] }, 5.99, 3.99 ] } } } ] )