Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
Operadores de pipeline de agregación

$toDouble (agregación)

$toDouble

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

$toDouble tiene la siguiente sintaxis:

{
$toDouble: <expression>
}

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

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

{ $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

Sin operación. Devuelve el double.

Decimal

Devuelve el valor decimal como un double.

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

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 un double.

Long

Devuelve el valor largo como un double.

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 no sea de base 10 (por "0x6400" ejemplo,) o un valor que esté fuera del valor mínimo y máximo para un doble.

fecha

Devuelve la cantidad de milisegundos desde la Unix epoch 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