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