Definición
$toDoubleConvierte un valor en un doble. Si el valor no se puede convertir en un doble,
$toDoubleerrores. Si el valor es nulo o falta, devuelve$toDoublenulo.$toDoubletiene la siguiente sintaxis:{ $toDouble: <expression> } El toma cualquier valor
$toDoubleválido expresión.$toDoublees una abreviatura de la siguiente$convertexpresión:{ $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 | 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, No se puede convertir un valor de cadena de un número que 10 |
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 |
|---|---|
| 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 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.