Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

$toInt (agregação)

Nesta página

  • Definição
  • Comportamento
  • Exemplo
$toInt

Converte um valor em número inteiro. Se o valor não puder ser convertido em um número inteiro, $toInt apresentará erro. Se o valor for nulo ou estiver ausente, $toInt retornará nulo.

$toInt tem a seguinte sintaxe:

{
$toInt: <expression>
}

O $toInt usa qualquer expressãoválida.

O $toInt é uma abreviatura para a seguinte expressão $convert:

{ $convert: { input: <expression>, to: "int" } }

Dica

Veja também:

A tabela a seguir lista os tipos de entrada que podem ser convertidos para um número inteiro:

Tipo de entrada
Comportamento
Boolean
Returns 0 for false.
Returns 1 for true.
Double

Retorna valor truncado.

O valor double truncado deve cair dentro do valor mínimo e máximo para um número inteiro.

Você não pode converter um valor double cujo valor truncado é menor que o valor inteiro mínimo ou é maior que o valor inteiro máximo.

Decimal

Retorna valor truncado.

O valor decimal truncado deve cair dentro do valor mínimo e máximo para um número inteiro.

Você não pode converter um valor decimal cujo valor truncado é menor que o valor inteiro mínimo ou é maior que o valor inteiro máximo.

Inteiro
Nenhum oplog. Retorna o valor inteiro.
Long

Retorna o valor longo como um número inteiro.

O valor longo deve cair dentro do valor mínimo e máximo para um número inteiro.

Você não pode converter um valor longo que seja menor que o valor inteiro mínimo ou maior que o valor inteiro máximo.

String

Retorna o valor numérico da string como um número inteiro.

O valor da string deve ser um número inteiro 10 de base; por exemplo "-5", "123456").

Você não pode converter um valor de string de um número flutuante, decimal ou 10 que não seja de base (por exemplo, "-5.0", "0x6400")

A tabela a seguir lista alguns exemplos de conversão para número inteiro:

Exemplo
Resultados
$toInt: true
1
$toInt: false
0
$toInt: 1.99999
1
$toInt: NumberDecimal("5.5000")
5
$toInt: NumberDecimal("9223372036000.000")
Erro
$toInt: NumberLong("5000")
5.000
$toInt: NumberLong("922337203600")
Erro
$toInt: "-2"
-2
$toInt: "2.5"
Erro
$toInt: null
zero

Crie uma collection orders com os seguintes documentos:

db.orders.insertMany( [
{ _id: 1, item: "apple", qty: "5", price: 10 },
{ _id: 2, item: "pie", qty: "10", price: NumberDecimal("20.0") },
{ _id: 3, item: "ice cream", qty: "2", price: "4.99" },
{ _id: 4, item: "almonds" , qty: "5", price: 5 }
] )

A seguinte operação de aggregation:

  • converte qty em um número inteiro,

  • converte price em um decimal,

  • calcula o preço total:

// Define stage to add convertedPrice and convertedQty fields with the converted price and qty values
priceQtyConversionStage = {
$addFields: {
convertedPrice: { $toDecimal: "$price" },
convertedQty: { $toInt: "$qty" },
}
};
// Define stage to calculate total price by multiplying convertedPrice and convertedQty fields
totalPriceCalculationStage = {
$project: { item: 1, totalPrice: { $multiply: [ "$convertedPrice", "$convertedQty" ] } }
};
db.orders.aggregate( [
priceQtyConversionStage,
totalPriceCalculationStage
] )

A operação retorna os seguintes documentos:

{ _id: 1, item: 'apple', totalPrice: Decimal128("50") },
{ _id: 2, item: 'pie', totalPrice: Decimal128("200.0") },
{ _id: 3, item: 'ice cream', totalPrice: Decimal128("9.98") },
{ _id: 4, item: 'almonds', totalPrice: Decimal128("25") }

Observação

Se a operação de conversão encontrar um erro, a operação de aggregation interromperá e exibirá um erro. Para substituir esse comportamento, use $convert em vez disso.

Voltar

$toDouble