Chapter ini memperkenalkan salah satu fungsi kueri geospasial MongoDB, yaitu untuk mengkueri data dokumen berdasarkan jarak.

Skenario aplikasi: mencari toko terdekat, dan menemukan orang-orang terdekat.

Tutorial Prasyarat

Pemodelan Data Geospasial MongoDB

Prasyarat untuk mengkueri data berdasarkan jarak adalah sebagai berikut:

  • Setiap data dokumen mengandung sebuah bidang yang menyimpan data koordinat, misalnya: bidang lokasi menyimpan koordinat sebuah toko.
  • Membuat indeks spasial 2dsphere atau 2d.

Operator $near

MongoDB menggunakan operator $near untuk mengkueri data dokumen berdasarkan jarak.

Format:

{
   <bidang lokasi>: { // Bidang yang menyimpan data koordinat
     $near: {
       $geometry: { // Tetapkan koordinat referensi untuk perbandingan
          type: "Point" ,
          coordinates: [ longitude , latitude ]
       },
       $maxDistance: jarak maksimum, dalam meter,
       $minDistance: jarak minimum, dalam meter
     }
   }
}

Catatan: Data yang dikembalikan oleh kueri $near diurutkan dari terdekat ke terjauh.

Contoh

Misalkan koleksi toko menyimpan data toko, di mana bidang lokasi menyimpan koordinat setiap toko. Kueri berikut menemukan toko terdekat dengan saya (jarak minimum 1000 meter, jarak maksimum 5000 meter).

db.toko.find(
   {
     lokasi:
       { $near :
          {
            $geometry: { type: "Point",  coordinates: [ -73.9667, 40.78 ] }, // Koordinat saya
            $minDistance: 1000, // Jarak minimum
            $maxDistance: 5000 // Jarak maksimum
          }
       }
   }
)