$trunc (Truncar)
Última atualização: 2026-10-09
$trunc (Truncar)
$trunc trunca a parte fracionária de um número em direção a zero, opcionalmente mantendo um número especificado de casas decimais. Ele recebe o valor e um argumento opcional de casa com as mesmas regras de $round. É usado para descartar centavos, preparar valores de exibição ou paginar. Ao contrário de $round, nunca arredonda para cima: 2.9 vira 2 e -2.9 vira -2. Para positivos, $trunc coincide com $floor, mas nos negativos divergem: -1.2 vira -1 com $trunc e -2 com $floor.
| Categoria | Matemática |
|---|---|
| Versão do MongoDB | 1.0+ |
| Idioma do Exemplo | mongosh (Shell) |
📝 Sintaxe
{ $trunc: [ <valor>, <casa> ] }
⚙️ Parâmetros
| valor numérico | Um valor numérico ou uma expressão que resolva para um. |
|---|---|
| posição | Casas decimais opcionais; 0 ou omitido arredonda para um inteiro, valores negativos arredondam para dezenas ou mais. |
Retorno:O valor truncado; null quando null ou ausente
▶ Exemplo
Execute os comandos abaixo no seu mongosh local (requer um mongod em execução):
// $trunc: descartar a parte fracionária dos valores
db.orders.aggregate([
{ $project: {
whole: { $trunc: '$price' }
} }
])
Saída:
{ '_id': 1, 'whole': 19 }
{ '_id': 2, 'whole': 12 }
📌 Notas
- Sempre corta em direção a zero, sem arredondar
- Difere de $floor nos negativos: $trunc(-1.2) é -1
- O argumento casa aceita negativos para arredondar a dezenas ou centenas
🏷️ Tags Relacionados
💡 Casos Relacionados
Mais casos práticos em breve.
📚 Tutoriais Relacionados
❓ Perguntas Frequentes
QComo $trunc e $floor diferem nos negativos?
A$trunc corta em direção a zero (-1.2 vira -1) enquanto $floor vai em direção ao infinito negativo (-1.2 vira -2).
QComo $trunc e $round diferem?
A$trunc simplesmente descarta a fração enquanto $round arredonda na fronteira .5.
QO $trunc consegue manter casas decimais?
ASim, o segundo argumento define as casas, então $trunc: [19.999, 2] dá 19.99.