$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.

CategoriaConjunto, Condição e Conversão
Versão do MongoDB1.0+
Idioma do Exemplomongosh (Shell)

📝 Sintaxe

{ $toDecimal: <expressão> }

⚙️ Parâmetros

expressãoUm 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

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.
Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%