Docs Menu
Docs Home
/ /

$toDouble (operador de expresión)

$toDouble

Convierte un valor en un doble. Si el valor no se puede convertir en un doble, $toDouble errores. Si el valor es nulo o falta, devuelve$toDouble nulo.

$toDouble tiene la siguiente sintaxis:

{
$toDouble: <expression>
}

El toma cualquier valor $toDouble válido expresión.

$toDouble es una abreviatura de la siguiente $convert expresión:

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

La siguiente tabla enumera los tipos de entrada que se pueden convertir a doble:

Tipo de entrada
Comportamiento

Booleano

Returns 0 for false.
Returns 1 for true.

Double

No-op. Devuelve el doble.

Decimal

Devuelve el valor decimal como doble.

El valor decimal debe estar dentro del valor mínimo y máximo para un doble.

No se puede convertir un valor decimal cuyo valor sea menor que el valor doble mínimo o mayor que el valor doble máximo.

entero

Devuelve el valor int como doble.

Long

Devuelve el valor largo como doble.

String

Retorna el valor numérico de la string como un doble.

El valor de cadena debe ser un valor numérico en base 10 (ejemplo, "-5.5", "123456") y debe estar en el rango del valor mínimo al máximo para un double.

No se puede convertir un valor de cadena de un número que 10 "0x6400" no sea base (por ejemplo,) o un valor que esté fuera del valor mínimo y máximo para un doble.

fecha

Devuelve el número de milisegundos desde la época que corresponde al valor de la fecha.

La siguiente tabla enumera algunos ejemplos de conversión a doble:

Ejemplo
Resultados

$toDouble: true

1

$toDouble: false

0

$toDouble: 2.5

2.5

$toDouble: Int32(5)

5

$toDouble: Long(10000)

10000

$toDouble: "-5.5"

-5.5

$toDouble: ISODate("2018-03-27T05:04:47.890Z")

1522127087890

Cree una colección weather con los siguientes 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" },
] )

La siguiente operación de agregación en la colección weather analiza el valor temp y lo convierte en un doble:

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

La operación devuelve los siguientes 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 }

Nota

Si la operación de conversión detecta un error, la operación de agregación se detiene y genera un error. Para anular este comportamiento,$convert utilice.

Volver

$toDecimal

En esta página