MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB $radiansToDegrees

In MongoDB die $radiansToDegrees Aggregation-Pipeline-Operator wandelt einen im Bogenmaß gemessenen Eingabewert in Grad um.

$radiansToDegrees akzeptiert jeden gültigen Ausdruck, der in eine Zahl aufgelöst wird.

Die $radiansToDegrees -Operator wurde in MongoDB 4.2 eingeführt.

Beispiel

Angenommen, wir haben eine Sammlung namens test mit folgendem Dokument:

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

Und nehmen wir an, dass der Wert der data Feld ist im Bogenmaß angegeben (d. h. 0.5 Radiant).

Wir können $radiansToDegrees verwenden Operator zum Konvertieren der data Feld in Grad:

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

Ergebnis:

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

Standardmäßig ist die $radiansToDegrees -Operator gibt Werte als double zurück , aber es kann auch Werte als 128-Bit-Dezimalwert zurückgeben, solange der Ausdruck in einen 128-Bit-Dezimalwert aufgelöst wird.

128-Bit-Dezimalwerte

Wenn der Ausdruck für $radiansToDegrees bereitgestellt wird 128-Bit-Dezimalzahl ist, wird das Ergebnis in 128-Bit-Dezimalzahl zurückgegeben.

Angenommen, wir fügen unserer Sammlung das folgende Dokument hinzu:

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

Lassen Sie uns den $radiansToDegrees ausführen Operator gegen dieses Dokument:

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

Ergebnis:

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

Die Ausgabe ist 128-Bit dezimal.

Nullwerte

Nullwerte geben null zurück bei Verwendung von $radiansToDegrees Betreiber.

Angenommen, wir fügen unserer Sammlung das folgende Dokument hinzu:

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

Lassen Sie uns den $radiansToDegrees ausführen Operator gegen dieses Dokument:

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

Ergebnis:

{ "degrees" : null }

Wir können sehen, dass das Ergebnis null ist .

NaN-Werte

Wenn das Argument zu NaN aufgelöst wird , $radiansToDegrees gibt NaN zurück .

Beispiel:

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

Ergebnis:

{ "degrees" : NaN }

Unendlich

Wenn das Argument zu Infinity aufgelöst wird oder -Infinity , die $radiansToDegrees Operator gibt Infinity zurück .

Angenommen, wir fügen unserer Sammlung das folgende Dokument hinzu:

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

Lassen Sie uns $radiansToDegrees ausführen gegen das Datenfeld:

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

Ergebnis:

{ "degrees" : Infinity }

Nicht vorhandene Felder

Wenn die $radiansToDegrees -Operator wird auf ein nicht vorhandenes Feld angewendet, null zurückgegeben wird.

Beispiel:

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

Ergebnis:

{ "degrees" : null }

Kombiniert mit anderen Operatoren

Einige Betreiber von Aggregationspipelines geben ihr Ergebnis in Radiant zurück. Sie können $radiansToDegrees kombinieren mit solchen Operatoren, um das Ergebnis in Grad zurückzugeben.

Angenommen, wir haben eine Sammlung namens test mit folgendem Dokument:

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

Angenommen, wir möchten $asin verwenden -Operator, um den Arkussinus der data zurückzugeben Feld. Der $asin Der Operator gibt sein Ergebnis im Bogenmaß zurück, aber nehmen wir an, wir wollen stattdessen das Ergebnis in Grad.

In diesem Fall können wir Folgendes tun:

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

Ergebnis:

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

In diesem Beispiel zeigt das erste Feld das Ergebnis in Bogenmaß und das zweite Feld in Grad an.