$switch (Condicional de Múltiplas Ramificações)
Última atualização: 2026-10-09
$switch (Condicional de Múltiplas Ramificações)
$switch avalia várias ramificações de case em ordem e retorna o resultado then do primeiro case verdadeiro, como uma instrução switch de linguagem de programação. Quando nenhuma ramificação corresponde, retorna default; omitir default quando nada corresponde gera erro. Usos típicos: mapear códigos de status de pedido para rótulos ou classificar pontuações em faixas. Cada case segue as regras de veracidade. Comparado a $cond aninhado, $switch lê melhor e suporta ramificações ilimitadas.
| Categoria | Conjunto, Condição e Conversão |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $switch: { branches: [ { case: <condição>, then: <resultado> }, ... ], default: <padrão> } }
⚙️ Parâmetros
| branches | A matriz de ramos; cada item tem uma condição case e um resultado then. |
|---|---|
| default | Valor opcional retornado quando nenhum caso corresponde. |
Retorno:O then do primeiro caso verdadeiro, ou default quando nenhum corresponde
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $switch: classificar pedidos por valor
db.orders.aggregate([
{ $project: {
tier: { $switch: { branches: [
{ case: { $gte: ['$amount', 1000] }, then: 'gold' },
{ case: { $gte: ['$amount', 100] }, then: 'silver' }
], default: 'bronze' } }
} }
])
Saída:
{ '_id': 1, 'tier': 'silver' }
{ '_id': 2, 'tier': 'bronze' }
📌 Notas
- As ramificações são avaliadas em ordem e param na primeira verdadeira
- Default ausente com nenhuma ramificação correspondente gera erro; sempre forneça-o em produção
- Os cases seguem as regras de veracidade, então expressões não booleanas são aceitáveis
🏷️ Tags Relacionados
💡 Casos Relacionados
Mais casos práticos em breve.
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QO que acontece quando nenhuma ramificação corresponde?
ARetorna default; sem default ele gera erro, então sempre forneça um.
QO $switch é melhor que $cond aninhado?
A$switch lê melhor com muitas ramificações, mantendo a lógica plana.
QTodos os cases são avaliados?
ANão — a avaliação encurta no primeiro caso correspondente.