Photo by Daniil Silantev on Unsplash
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
]
}
}
]