sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB $ radianes a grados

En MongoDB, el $radiansToDegrees El operador de tubería de agregación convierte un valor de entrada medido en radianes a grados.

$radiansToDegrees acepta cualquier expresión válida que se resuelva en un número.

El $radiansToDegrees El operador se introdujo en MongoDB 4.2.

Ejemplo

Supongamos que tenemos una colección llamada test con el siguiente documento:

{ "_id" : 1, "data" : 0.5 }

Y supongamos que el valor de los data el campo está en radianes (es decir, 0.5 radianes).

Podemos usar el $radiansToDegrees operador para convertir los data campo a grados:

db.test.aggregate(
  [
    { $match: { _id: 1 } },
    { $project: { 
        _id: 0,
        radians: "$data",
        degrees: { $radiansToDegrees: "$data" }
      }
    }
  ]
)

Resultado:

{ "radians" : 0.5, "degrees" : 28.64788975654116 }

De forma predeterminada, $radiansToDegrees el operador devuelve valores como double , pero también puede devolver valores como un decimal de 128 bits siempre que la expresión se resuelva en un valor decimal de 128 bits.

Valores decimales de 128 bits

Si la expresión proporcionada a $radiansToDegrees es decimal de 128 bits, entonces el resultado se devuelve en decimal de 128 bits.

Supongamos que agregamos el siguiente documento a nuestra colección:

{ "_id" : 2, "data" : NumberDecimal("0.1301023541559787031443874490659") }

Ejecutemos el $radiansToDegrees operador contra ese documento:

db.test.aggregate(
  [
    { $match: { _id: 2 } },
    { $project: { 
        _id: 0,
        radians: "$data",
        degrees: { $radiansToDegrees: "$data" }
      }
    }
  ]
).pretty()

Resultado:

{
	"radians" : NumberDecimal("0.1301023541559787031443874490659"),
	"degrees" : NumberDecimal("7.454315797853905125952127312900524")
}

La salida es decimal de 128 bits.

Valores nulos

Los valores nulos devuelven null cuando se usa $radiansToDegrees operador.

Supongamos que agregamos el siguiente documento a nuestra colección:

{ "_id" : 3, "data" : null }

Ejecutemos el $radiansToDegrees operador contra ese documento:

db.test.aggregate(
  [
    { $match: { _id: 3 } },
    { $project: { 
        _id: 0,
        degrees: { $radiansToDegrees: "$data" }
      }
    }
  ]
)

Resultado:

{ "degrees" : null }

Podemos ver que el resultado es null .

Valores NaN

Si el argumento se resuelve en NaN$radiansToDegrees devuelve NaN .

Ejemplo:

db.test.aggregate(
  [
    { $match: { _id: 3 } },
    { $project: { 
        _id: 0,
        degrees: { $radiansToDegrees: 0 * "$data" }
      }
    }
  ]
)

Resultado:

{ "degrees" : NaN }

Infinito

Si el argumento se resuelve en Infinity o -Infinity , el $radiansToDegrees el operador devuelve Infinity .

Supongamos que agregamos el siguiente documento a nuestra colección:

{ "_id" : 4, "data" : Infinity }

Ejecutemos $radiansToDegrees contra el campo de datos:

db.test.aggregate(
  [
    { $match: { _id: 4 } },
    { $project: { 
        _id: 0,
        degrees: { $radiansToDegrees: "$data" }
      }
    }
  ]
)

Resultado:

{ "degrees" : Infinity }

Campos Inexistentes

Si el $radiansToDegrees el operador se aplica a un campo que no existe, null es devuelto.

Ejemplo:

db.test.aggregate(
  [
    { $match: { _id: 4 } },
    { $project: { 
        _id: 0,
        degrees: { $radiansToDegrees: "$name" }
      }
    }
  ]
)

Resultado:

{ "degrees" : null }

Combinado con otros operadores

Algunos operadores de tubería de agregación devuelven su resultado en radianes. Puede combinar $radiansToDegrees con dichos operadores para devolver el resultado en grados.

Supongamos que tenemos una colección llamada test con el siguiente documento:

{ "_id" : 1, "data" : 0.5 }

Y supongamos que queremos usar el $asin operador para devolver el arcoseno de los data campo. El $asin operador devuelve su resultado en radianes, pero supongamos que queremos el resultado en grados.

En este caso, podemos hacer lo siguiente:

db.test.aggregate(
  [
    { $match: { _id: 1 } },
    { $project: { 
        _id: 0,
        radians: { $asin: "$data" },
        degrees: { $radiansToDegrees: { $asin: "$data" } }
      }
    }
  ]
)

Resultado:

{ "radians" : 0.5235987755982988, "degrees" : 29.999999999999996 }

En este ejemplo, el primer campo presenta el resultado en radianes y el segundo campo lo presenta en grados.