$toDecimal (Converter para Decimal128)
Última atualização: 2026-10-09
$toDecimal (Converter para Decimal128)
$toDecimal converte um valor em Decimal128, o tipo decimal de alta precisão para dinheiro e outras operações sensíveis à precisão, evitando os erros de ponto flutuante binário do double. Ele aceita números, strings numéricas e booleanos; null permanece null. Usos típicos: acumular e comparar valores de pedidos. Aritmética mista com double promove automaticamente para decimal, mas conversões de strings inválidas geram erro, então proteja com onError de $convert.
| Categoria | Conjunto, Condição e Conversão |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $toDecimal: <expressão> }
⚙️ Parâmetros
| expressão | Um número, uma string numérica ou um booleano. |
|---|
Retorno:Um valor Decimal128; null quando a entrada é null
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $toDecimal: interpretar uma string de valor com alta precisão
db.orders.aggregate([
{ $project: {
amount: { $toDecimal: '$amountStr' }
} }
])
Saída:
{ '_id': 1, 'amount': { '$numberDecimal': '199.90' } }
📌 Notas
- Prefira decimal para dinheiro para evitar erros de precisão do double
- Strings numéricas inválidas (ex.: 'abc') geram erro
- Entrada null resulta em null
🏷️ Tags Relacionados
💡 Casos Relacionados
Mais casos práticos em breve.
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QPor que usar decimal para dinheiro?
Adouble tem erro de ponto flutuante binário; 0.1 se acumula de forma imprecisa, enquanto Decimal128 é exato.
QQuais entradas convertem?
ANúmeros, strings numéricas e booleanos (true vira 1).
QE a string 'abc'?
AEla gera erro; proteja com onError de $convert.