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 um valor duplo. Se o valor não puder ser convertido em um valor duplo, $toDouble apresentará erro. Se o valor for nulo ou estiver ausente, $toDouble retornará nulo.

$toDouble tem a seguinte sintaxe:

{
$toDouble: <expression>
}

$toDouble usa qualquerexpressão vá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 um valor duplo:

Tipo de entrada
Comportamento
Boolean
Retorna 0 para false.
Retorna 1 para true.
Duplo
Nenhum oplog. Retorna o valor duplo.
Decimal

Retorna o valor decimal em um valor duplo.

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

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

Inteiro
Retorna o valor inteiro como um valor duplo.
Longo
Retorna o valor longo como um valor duplo.
String

Retorna o valor numérico da string como um valor duplo.

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 valor duplo.

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 valor duplo.

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 valores duplos:

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 aggregation na collection weather analisa o valor temp e converte para um valor duplo:

// 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 (agregação)

Próximo

$toHashedIndexKey (agregação)