Dieses Kapitel stellt eine der georäumlichen Abfragefunktionen von MongoDB vor, nämlich die Abfrage von Dokumentendaten basierend auf der Entfernung.

Anwendungsszenarien: Suche nach nahegelegenen Geschäften und Auffinden von Personen in der Nähe.

Voraussetzung Tutorial

MongoDB Geospatial Data Storage Format

Die Voraussetzungen für die Abfrage von Daten basierend auf der Entfernung sind wie folgt:

  • Jede Dokumentendaten enthält ein Feld, das Koordinatendaten speichert, beispielsweise speichert das Feld location die Koordinaten eines Ladens.
  • Erstellen Sie einen 2dsphere- oder 2d-Raumindex.

Der $near Operator

MongoDB verwendet den $near Operator, um Dokumentendaten basierend auf der Entfernung abzufragen.

Format:

{
   <Standortfeld>: { // Feld, das die Koordinatendaten speichert
     $near: {
       $geometry: { // Setzen Sie die Referenzkoordinaten für den Vergleich
          type: "Point" ,
          coordinates: [ Längengrad , Breitengrad ]
       },
       $maxDistance: maximale Entfernung in Metern,
       $minDistance: minimale Entfernung in Metern
     }
   }
}

Hinweis: Die von der $near-Abfrage zurückgegebenen Daten sind von der nächsten bis zur entferntesten sortiert.

Beispiel

Angenommen, die Sammlung shop speichert Laden-Daten, wobei das Feld location die Koordinaten jedes Ladens speichert. Die folgende Abfrage findet den nächstgelegenen Laden zu mir (minimale Entfernung 1000 Meter, maximale Entfernung 5000 Meter).

db.shop.find(
   {
     location:
       { $near :
          {
            $geometry: { type: "Point",  coordinates: [ -73.9667, 40.78 ] }, // Meine Koordinaten
            $minDistance: 1000, // Minimale Entfernung
            $maxDistance: 5000 // Maximale Entfernung
          }
       }
   }
)