

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
<a name="atan2"></a>

Neu ab Version 8.0.1.

Der `$atan2` Operator in Amazon DocumentDB gibt den umgekehrten Tangens (Arkustangens) von zurück`y / 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
<a name="atan2-behavior"></a>

**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 ist`NaN`, ist das Ergebnis`NaN`. Wenn ein Argument ist `null` und das andere ist`NaN`, 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)
<a name="atan2-examples"></a>

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
<a name="atan2-code"></a>

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()
```

------