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

$toDouble (agregação)

Nesta página

  • Definição
  • Comportamento
  • Exemplo
$toDouble

Converte um valor em double. Se o valor não puder ser convertido em double, $toDouble apresentará erro. Se o valor for nulo ou estiver ausente, $toDouble retornará nulo.

$toDouble tem a seguinte sintaxe:

{
$toDouble: <expression>
}

O $toDouble usa qualquer expressãoválida.

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

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

A tabela a seguir lista os tipos de entrada que podem ser convertidos em double:

Tipo de entrada
Comportamento
Boolean
Returns 0 for false.
Returns 1 for true.
Double
Nenhum oplog. Retorna o double.
Decimal

Retorna o valor decimal como double.

O valor decimal deve cair dentro do valor mínimo e máximo para um double.

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

Inteiro
Retorna o valor inteiro como double.
Long
Retorna o valor longo como double.
String

Retorna o valor numérico da string como double.

O valor da string deve ser de um valor numérico 10 de base (por exemplo, "-5.5", "123456") e cair dentro do valor mínimo e máximo para um double.

Você não pode converter um valor de string de um número 10 que não seja de base (por exemplo, "0x6400") ou um valor que está fora do valor mínimo e máximo para um double.

Data
Retorna o número de milissegundos desde a época que corresponde ao valor de data.

A tabela a seguir lista alguns exemplos de conversão em double:

Exemplo
Resultados
$toDouble: true
1
$toDouble: false
0
$toDouble: 2.5
2.5
$toDouble: NumberInt(5)
5
$toDouble: NumberLong(10000)
10.000
$toDouble: "-5.5"
-5.5
$toDouble: ISODate("2018-03-27T05:04:47.890Z")
1522127087890

Crie uma collection weather com os seguintes documentos:

db.weather.insertMany( [
{ _id: 1, date: new Date("2018-06-01"), temp: "26.1C" },
{ _id: 2, date: new Date("2018-06-02"), temp: "25.1C" },
{ _id: 3, date: new Date("2018-06-03"), temp: "25.4C" },
] )

A seguinte operação de agregação na collection weather analisa o valor temp e converte para double:

// Define stage to add degrees field with converted value
tempConversionStage = {
$addFields: {
degrees: { $toDouble: { $substrBytes: [ "$temp", 0, 4 ] } }
}
};
db.weather.aggregate( [
tempConversionStage,
] )

A operação retorna os seguintes documentos:

{ "_id" : 1, "date" : ISODate("2018-06-01T00:00:00Z"), "temp" : "26.1C", "degrees" : 26.1 }
{ "_id" : 2, "date" : ISODate("2018-06-02T00:00:00Z"), "temp" : "25.1C", "degrees" : 25.1 }
{ "_id" : 3, "date" : ISODate("2018-06-03T00:00:00Z"), "temp" : "25.4C", "degrees" : 25.4 }

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

$toDecimal