# MongoDB Finds Location by Radius

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:

```json
[
	{
		"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`:

```bash
# 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:

```json
{
  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:

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

### References

* [https://www.mongodb.com/docs/manual/reference/operator/query/near/](https://www.mongodb.com/docs/manual/reference/operator/query/near/)
    
* [https://www.mongodb.com/docs/manual/reference/glossary/#std-term-GeoJSON](https://www.mongodb.com/docs/manual/reference/glossary/#std-term-GeoJSON)
    
* [https://www.mongodb.com/docs/manual/core/2dsphere/](https://www.mongodb.com/docs/manual/core/2dsphere/)
    
* [https://www.mongodb.com/docs/v6.0/reference/operator/query/geometry/](https://www.mongodb.com/docs/v6.0/reference/operator/query/geometry/)
