$cond (Expressão Condicional)
Última atualização: 2026-10-09
$cond (Expressão Condicional)
$cond implementa a lógica ternária se-então-senão, o operador de ramificação mais básico em expressões de agregação. Suporta uma forma de objeto { if, then, else } e uma forma de array [ condição, resultadoTrue, resultadoFalse ], que são equivalentes. Usos típicos: calcular faixas de frete a partir de valores de pedido ou mapear códigos de status para rótulos. A condição segue as regras de veracidade, então valores não booleanos também funcionam. Para muitas ramificações, $switch é mais claro.
| Categoria | Conjunto, Condição e Conversão |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $cond: { if: <condição>, then: <resultado1>, else: <resultado2> } } ou { $cond: [ <condição>, <resultado1>, <resultado2> ] }
⚙️ Parâmetros
| if/condição | A expressão que escolhe um ramo, julgada por veracidade. |
|---|---|
| then/resultado 1 | O resultado quando a condição é verdadeira. |
| else/resultado 2 | O resultado quando a condição é falsa. |
Retorno:result1 quando a condição é verdadeira, caso contrário result2
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $cond: valores acima de 100 são pedidos grandes
db.orders.aggregate([
{ $project: {
level: { $cond: { if: { $gt: ['$amount', 100] }, then: 'big', else: 'small' } }
} }
])
Saída:
{ '_id': 1, 'level': 'big' }
{ '_id': 2, 'level': 'small' }
📌 Notas
- As formas de objeto e de array são equivalentes e intercambiáveis
- else é obrigatório e não pode ser omitido
- Para mais de duas ramificações, $switch lê melhor
🏷️ Tags Relacionados
💡 Casos Relacionados
Mais casos práticos em breve.
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QA condição pode ser não booleana?
ASim — a veracidade se aplica; 0, null e '' são falsos.
QQual é a diferença entre as duas formas?
ANenhuma — a semântica é idêntica, apenas a sintaxe difere.
QComo lidar com muitas ramificações?
AUse $switch, que corresponde à primeira ramificação verdadeira em ordem.