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