$convert (Conversão de Tipos)
Última atualização: 2026-10-09
$convert (Conversão de Tipos)
$convert converte um valor para um tipo BSON de destino e é o ponto de entrada mestre para conversões de tipos. O parâmetro to aceita double, string, objectId, bool, date, int, long e decimal. Falhas de conversão geram erro por padrão, mas onError fornece uma substituição; entrada null resulta em null por padrão e onNull o substitui. Usos típicos: transformar strings numéricas em números para aritmética ou analisar strings de data em datas. Comparado a atalhos como $toInt, $convert adiciona tratamento de falhas.
| Categoria | Conjunto, Condição e Conversão |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $convert: { input: <expressão>, to: <tipo>, onError: <substituição>, onNull: <resultado nulo> } }
⚙️ Parâmetros
| input | O valor a converter. |
|---|---|
| to | O tipo de destino: double/string/objectId/bool/date/int/long/decimal. |
| onError | Valor opcional retornado quando a conversão falha. |
| onNull | Valor opcional retornado quando a entrada é null ou está ausente. |
Retorno:O valor convertido; onError/onNull se aplicam em caso de falha ou null
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $convert: analisar preço em string para número, substituição 0
db.products.aggregate([
{ $project: {
priceNum: { $convert: { input: '$priceStr', to: 'double', onError: 0 } }
} }
])
Saída:
{ '_id': 1, 'priceNum': 19.9 }
{ '_id': 2, 'priceNum': 0 }
📌 Notas
- Falhas geram erro por padrão; sempre forneça onError em produção
- Entrada null resulta em null; substitua com onNull
- $toInt/$toDouble etc. são atalhos para $convert, mas sem onError
🏷️ Tags Relacionados
💡 Casos Relacionados
Mais casos práticos em breve.
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QO que acontece quando $convert falha?
AGera erro e aborta o pipeline; com onError retorna a substituição.
QComo difere de $toInt?
A$toInt é uma forma abreviada de $convert; $convert adiciona o tratamento de onError/onNull.
QQuais tipos to aceita?
Adouble, string, objectId, bool, date, int, long e decimal.