View a markdown version of this page

$atan2 - Amazon DocumentDB

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

$atan2

Neu ab Version 8.0.1.

Der $atan2 Operator in Amazon DocumentDB gibt den umgekehrten Tangens (Arkustangens) von zurücky / x, wobei y und der erste bzw. zweite Wert x sind, der an den Ausdruck übergeben wird.

Beide Ausdrücke müssen in numerische Werte aufgelöst werden. Der Operator verwendet das Vorzeichen beider Argumente, um den richtigen Quadranten zu bestimmen.

Das Ergebnis wird im Bogenmaß angegeben. Um Grade zu erhalten, wenden Sie $radiansToDegrees sich an die Ausgabe.

Der Rückgabetyp ist double standardmäßig. Wenn die Eingaben 128-Bit-Dezimalzahlen sind, ist die Ausgabe ebenfalls eine 128-Bit-Dezimalzahl.

Parameter

  • expression 1(y): Ein Ausdruck, der in eine Zahl aufgelöst wird, die die Y-Koordinate darstellt.

  • expression 2(x): Ein Ausdruck, der in eine Zahl aufgelöst wird, die die X-Koordinate darstellt.

Behavior

null und NaN

Wenn eines der Argumente gleich ist null (oder auf ein fehlendes Feld verweist), ist null das Ergebnis Wenn eines der Argumente gleich istNaN, ist das ErgebnisNaN. Wenn ein Argument ist null und das andere istNaN, hat null Vorrang.

Beispiel Ergebnisse
{ $atan2: [ NaN, <value> ] } NaN
{ $atan2: [ <value>, NaN ] } NaN
{ $atan2: [ null, <value> ] } null
{ $atan2: [ <value>, null ] } null
{ $atan2: [ NaN, null ] } null
{ $atan2: [ null, NaN ] } null

Beispiel (MongoDB Shell)

Das folgende Beispiel zeigt, wie der $atan2 Operator verwendet wird, um den Arkustangens von y/x für eine Reihe von Punkten zu berechnen.

Erstellen Sie Beispieldokumente

db.points.insertMany([ { "_id": 1, "y": 1, "x": 1 }, { "_id": 2, "y": 1, "x": 0 }, { "_id": 3, "y": -1, "x": -1 } ]);

Beispiel für eine Abfrage

db.points.aggregate([ { $project: { "angle": { $atan2: ["$y", "$x"] } }} ]);

Ausgabe

[ { "_id": 1, "angle": 0.7853981633974483 }, { "_id": 2, "angle": 1.5707963267948966 }, { "_id": 3, "angle": -2.356194490192345 } ]

Codebeispiele

Um ein Codebeispiel für die Verwendung des $atan2 Operators anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

Node.js
const { MongoClient } = require('mongodb'); async function main() { const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false'); const db = client.db('test'); const collection = db.collection('points'); const result = await collection.aggregate([ { $project: { "angle": { $atan2: ["$y", "$x"] } }} ]).toArray(); console.log(result); await client.close(); } main();
Python
from pymongo import MongoClient def main(): client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false') db = client['test'] collection = db['points'] result = list(collection.aggregate([ { '$project': { 'angle': { '$atan2': ['$y', '$x'] } }} ])) print(result) client.close() if __name__ == "__main__": main()