

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.

# \$1geoNear
<a name="geoNear"></a>

In der `$geoNear` Aggregationsphase werden Dokumente in der Reihenfolge ihrer Nähe zu einem bestimmten Punkt zurückgegeben. Sie berechnet die Entfernung vom Punkt und bezieht die Entfernung in die Ausgabedokumente ein.

**Parameter**
+ `near`: Der Punkt, von dem aus Entfernungen berechnet werden sollen, angegeben als GeoJSON- oder Legacy-Koordinaten.
+ `distanceField`: Der Feldname zum Speichern der berechneten Entfernung.
+ `spherical`: Boolescher Wert, der angibt, ob sphärische Geometrie verwendet werden soll (erforderlich für GeoJSON-Punkte).
+ `maxDistance`: Optional. Maximaler Abstand vom Mittelpunkt.
+ `minDistance`: Optional. Minimaler Abstand vom Mittelpunkt.
+ `query`: Optional. Zusätzliche anzuwendende Filterkriterien.
+ `limit`: Optional. Maximale Anzahl zurückzugebender Dokumente.
+ `key`: Optional. Feld, das für Geodatenabfragen verwendet werden soll, wenn mehrere Geoindizes vorhanden sind.

## Beispiel (MongoDB Shell)
<a name="geoNear-examples"></a>

Das folgende Beispiel zeigt, wie die `$geoNear` Bühne verwendet wird, um Geschäfte zu finden, die einem bestimmten Standort am nächsten sind.

**Erstellen Sie Beispieldokumente**

```
db.stores.createIndex({ location: "2dsphere" });

db.stores.insertMany([
  { _id: 1, name: "Store A", location: { type: "Point", coordinates: [-122.4, 37.8] } },
  { _id: 2, name: "Store B", location: { type: "Point", coordinates: [-122.5, 37.7] } },
  { _id: 3, name: "Store C", location: { type: "Point", coordinates: [-122.3, 37.9] } }
]);
```

**Beispiel für eine Abfrage**

```
db.stores.aggregate([
  {
    $geoNear: {
      near: { type: "Point", coordinates: [-122.4, 37.8] },
      distanceField: "distance",
      spherical: true
    }
  }
]);
```

**Ausgabe**

```
[
  { _id: 1, name: 'Store A', location: { type: 'Point', coordinates: [ -122.4, 37.8 ] }, distance: 0 },
  { _id: 3, name: 'Store C', location: { type: 'Point', coordinates: [ -122.3, 37.9 ] }, distance: 13877.82 },
  { _id: 2, name: 'Store B', location: { type: 'Point', coordinates: [ -122.5, 37.7 ] }, distance: 15557.89 }
]
```

## Codebeispiele
<a name="geoNear-code"></a>

Um ein Codebeispiel für die Verwendung der `$geoNear` Aggregationsphase anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function example() {
  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('stores');

  const result = await collection.aggregate([
    {
      $geoNear: {
        near: { type: "Point", coordinates: [-122.4, 37.8] },
        distanceField: "distance",
        spherical: true
      }
    }
  ]).toArray();

  console.log(result);
  await client.close();
}

example();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def example():
    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['stores']

    result = list(collection.aggregate([
        {
            '$geoNear': {
                'near': { 'type': 'Point', 'coordinates': [-122.4, 37.8] },
                'distanceField': 'distance',
                'spherical': True
            }
        }
    ]))

    print(result)
    client.close()

example()
```

------