Ten rozdział przedstawia jedną z funkcji zapytań geoprzestrzennych MongoDB, która służy do wyszukiwania danych dokumentów na podstawie odległości.
Przykłady zastosowań: wyszukiwanie pobliskich sklepów oraz znajdowanie osób w pobliżu.
Samouczek wstępny
Format przechowywania danych geoprzestrzennych MongoDB
Wymagania wstępne dla zapytań opartych na odległości obejmują:
- Każdy dokument danych zawiera pole przechowujące dane współrzędnych, na przykład: pole
location
przechowuje współrzędne sklepu. - Utwórz indeks przestrzenny 2dsphere lub 2d.
Operator $near
MongoDB używa operatora $near do zapytań dotyczących danych dokumentów na podstawie odległości.
Format:
{
<pole lokalizacji>: { // Pole przechowujące dane współrzędnych
$near: {
$geometry: { // Ustawianie współrzędnych odniesienia do porównania
type: "Point" ,
coordinates: [ długość geograficzna , szerokość geograficzna ]
},
$maxDistance: maksymalna odległość, w metrach,
$minDistance: minimalna odległość, w metrach
}
}
}
Uwaga: Dane zwracane przez zapytanie $near są sortowane od najbliższych do najdalszych.
Przykład
Załóżmy, że kolekcja shop
przechowuje dane sklepu, gdzie pole location
przechowuje współrzędne każdego sklepu. Poniższe zapytanie znajduje najbliższy sklep do mnie (minimalna odległość 1000 metrów, maksymalna odległość 5000 metrów).
db.shop.find(
{
location:
{ $near :
{
$geometry: { type: "Point", coordinates: [ -73.9667, 40.78 ] }, // Moje współrzędne
$minDistance: 1000, // Minimalna odległość
$maxDistance: 5000 // Maksymalna odległość
}
}
}
)