MongoDB Finds Location by Radius

Melakukan pencarian data pada MongoDB berdasarkan radius tertentu

Hi teman-teman pada artikel ini kita akan mempelajari bagaimana melakukan pencarian data pada MongoDB berdasarkan radius tertentu.

Asumsikan kita memiliki database dengan nama sandbox dan memiliki collection dengan nama malls.

Selanjutnya kita siapkan data dummy untuk dimasukan kedalam database dan collection yang baru kita buat tadi. Untuk data dummy kurang lebih seperti ini:

[
    {
        "name": "Pondok Indah Mall",
      "location": {
        "type": "Point",
          "coordinates": [
          106.7846567,
          -6.2653276
        ]
      }
    },
    {
      "name": "Central Park Mall",
      "location": {
          "type": "Point",
        "coordinates": [
          106.7909275,
          -6.176278
        ]
      }
    }
]

Selanjutnya yang kita lakukan adalah membuat index pada field location di collection malls dengan menjalankan command berikut pada mongosh:

# switch ke database sandbox
use sandbox

# create index
db.malls.createIndex({"location": "2dsphere"})

# response
'location_2dshpere'

Setelah berhasil membuat index, kita siapkan coordinate untuk melakukan query 106.7827962, -6.2615624 (coordinate Masjid Raya Pondok Indah). Lalu kita siapkan query yang akan kita jalakan seperti contoh dibawah ini:

{
  location: {
    $near: {
      $geometry: {
        type: "Point",
        coordinates: [106.7827962, -6.2615624]
      },
      $maxDistance: 1000
    }
  }
}

$maxDistance in meter

Jika berhasil kita akan mendapakan response seperti json di bawah ini:

[
    {
        "name": "Pondok Indah Mall",
      "location": {
        "type": "Point",
          "coordinates": [
          106.7846567,
          -6.2653276
        ]
      }
    }
]

References