$cond (agregação)
Nesta página
Definição
Compatibilidade
Você pode utilizar o $cond
para implantações hospedadas nos seguintes ambientes:
MongoDB Atlas: o serviço totalmente gerenciado para implantações do MongoDB na nuvem
MongoDB Enterprise: a versão autogerenciada e baseada em assinatura do MongoDB
MongoDB Community: uma versão com código disponível, de uso gratuito e autogerenciada do MongoDB
Sintaxe
A expressão $cond
tem uma de duas sintaxes:
{ $cond: { if: <boolean-expression>, then: <true-case>, else: <false-case> } }
Ou:
{ $cond: [ <boolean-expression>, <true-case>, <false-case> ] }
$cond
requer todos os três argumentos (if-then-else
) para qualquer sintaxe.
Se <boolean-expression>
for avaliado como true
, então $cond
será avaliado e retornará o valor da expressão <true-case>
. Caso contrário, $cond
avalia e retorna o valor da expressão <false-case>
.
Os argumentos podem ser qualquer expressão válida. Para mais informações sobre expressões, consulte Operadores de expressão.
Exemplo
O exemplo a seguir utiliza uma coleção inventory
com os seguintes documentos:
{ "_id" : 1, "item" : "abc1", qty: 300 } { "_id" : 2, "item" : "abc2", qty: 200 } { "_id" : 3, "item" : "xyz1", qty: 250 }
A operação de agregação a seguir usa a expressão $cond
para definir o valor de discount
como 30
se o valor qty
for maior ou igual a 250 e como 20
se o valor de qty
for menor que 250
:
db.inventory.aggregate( [ { $project: { item: 1, discount: { $cond: { if: { $gte: [ "$qty", 250 ] }, then: 30, else: 20 } } } } ] )
A operação retorna os seguintes resultados:
{ "_id" : 1, "item" : "abc1", "discount" : 30 } { "_id" : 2, "item" : "abc2", "discount" : 20 } { "_id" : 3, "item" : "xyz1", "discount" : 30 }
A operação a seguir usa a sintaxe de array da expressão $cond
e retorna os mesmos resultados:
db.inventory.aggregate( [ { $project: { item: 1, discount: { $cond: [ { $gte: [ "$qty", 250 ] }, 30, 20 ] } } } ] )