Definición
$toDoubleConvierte un valor a un double. Si no se puede convertir el valor en un double,
$toDoubleerrores. Si el valor es nulo o falta,$toDoubledevuelve nulo.$toDoubletiene la siguiente sintaxis:{ $toDouble: <expression> } El
$toDoubleacepta cualquier expresión.El
$toDoublees una abreviatura de la siguiente expresión$convert:{ $convert: { input: <expression>, to: "double" } }
Comportamiento
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 puedes convertir un valor decimal cuyo valor es menor que el valor double mínimo o mayor que el valor double 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, No se puede convertir un valor de string de un número que no sea de base 10 (p. ej., |
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 |
|---|---|
| 1 |
| 0 |
| 2.5 |
| 5 |
| 10000 |
| -5.5 |
| 1522127087890 |
Ejemplo
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 a un double:
// 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 encuentra un error, la operación de agregación se detiene y genera un error. Para anular este comportamiento, use $convert en su lugar.