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
locationdie 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
}
}
}
)