Le query geospaziali in MongoDB sono molto utili per effettuare ricerche che implicano dati geografici. Esse permettono ad esempio di trovare tutti i documenti all’interno di un certo raggio o distanza da un punto dato, oppure di stabilire l’ordine dei documenti basandosi sulla loro vicinanza ad un punto.
Per iniziare a utilizzare le query geospaziali in MongoDB, bisogna prima creare un indice geospaziale sul campo che contiene i dati geografici. MongoDB supporta sia gli indici 2d che gli indici 2dsphere.
Supponiamo di avere una collezione chiamata “places” che contiene Documenti con una struttura del genere:
```
{
name: “Central Park”,
location: {
type: “Point”,
coordinates: [-73.97, 40.77]
}
}
```
Per creare un indice geospaziale sul campo “location”, si può utilizzare il metodo `createIndex`:
```
db.places.createIndex({location: “2dsphere”})
```
Dopo aver creato l’indice, si possono utilizzare diverse tipologie di query geospaziale.
Ad esempio, per trovare tutti i luoghi all’interno di un raggio di 1 chilometro da un punto dato, si può utilizzare l’operatore `$near`:
```
db.places.find({
location: {
$near: {
$geometry: {
type: “Point” ,
coordinates: [ -73.97 , 40.77 ]
},
$maxDistance: 1000
}
}
})
```
Si può anche utilizzare l’operatore `$geoWithin` per trovare tutti i documenti all’interno di una certa regione, definita ad esempio come un poligono:
```
db.places.find({
location:{
$geoWithin: {
$geometry: {
type: “Polygon” ,
coordinates: [
[ [ -73.97, 40.77 ], [ -73.97, 40.78 ], [ -73.96, 40.78 ], [ -73.97, 40.77 ] ]
]
}
}
}
})
```
Questi solo alcuni degli esempi su come si possono utilizzare le query geospaziali in MongoDB. Per un elenco completo degli operatori e delle loro opzioni, si può fare riferimento alla documentazione ufficiale di MongoDB.