$cond (집계)
정의
호환성
다음 환경에서 호스팅되는 배포에 $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>
표현식의 값을 평가하고 반환합니다.
예시
다음 예시에서는 다음 문서와 함께 inventory
컬렉션을 사용합니다.
{ "_id" : 1, "item" : "abc1", qty: 300 } { "_id" : 2, "item" : "abc2", qty: 200 } { "_id" : 3, "item" : "xyz1", qty: 250 }
다음 집계 작업은 $cond
표현식을 사용하여 qty
값이 250 보다 크거나 같으면 discount
값을 30
으로, qty
값이 250
보다 작으면 20
으로 설정합니다.
db.inventory.aggregate( [ { $project: { item: 1, discount: { $cond: { if: { $gte: [ "$qty", 250 ] }, then: 30, else: 20 } } } } ] )
이 연산은 다음과 같은 결과를 반환합니다.
{ "_id" : 1, "item" : "abc1", "discount" : 30 } { "_id" : 2, "item" : "abc2", "discount" : 20 } { "_id" : 3, "item" : "xyz1", "discount" : 30 }
다음 작업은 $cond
표현식의 배열 구문을 사용하여 동일한 결과를 반환합니다.
db.inventory.aggregate( [ { $project: { item: 1, discount: { $cond: [ { $gte: [ "$qty", 250 ] }, 30, 20 ] } } } ] )