MongoDB proporciona varias características para consultar y trabajar con datos geoespaciales y mapas, lo que le permite almacenar y analizar con precisión los datos de ubicación geográfica.
Primero, necesitamos almacenar los datos geoespaciales en MongoDB. Los datos almacenados deben seguir el formato GeoJSON. Un punto en el espacio requeriría al menos los campos “type” y “coordinates”. Aquí está el ejemplo más simple:
```
{
“type” : “Point”,
“coordinates” : [longitude, latitude]
}
```
MongoDB tiene soporte para Point, LineString y Polygon GeoJSON Objects.
Una vez que guardaste los datos geoespaciales en MongoDB, puedes utilizar $geoIntersects, $geoWithin, $near, y $geoNear para filtrar, ordenar y buscar en tus datos de ubicación.
1. $geoIntersects: Selecciona documentos cuyo campo geoespacial se cruza con una forma GeoJSON especificada.
```
db.collection.find({
})
```
2. $geoWithin: Selecciona documentos cuyos campos geoespaciales están completamente dentro de una forma formada por geo-especificada.
```
db.collection.find({
})
```
3. $near: Devuelve documentos ordenados por la proximidad a una ubicación geográfica especificada, de más cercano a más lejano.
```
db.collection.find({
})
```
4. $geoNear: De todas las consultas geoespaciales en MongoDB, es el único que soporta la utilización de índices 2D esféricos y devolverá los resultados ordenados por proximidad.
```
db.runCommand({
geoNear: “collection”,
near: { type: “Point”, coordinates: [ -73.9667, 40.78 ] },
spherical: true,
query: { category: “Parks” },
num: 10
})
```
Nota: Estas consultas requieren que los datos sean almacenados en un formato específicamente GeoJSON y que se hayan creado índices geoespaciales exitosamente. Para crear índices geoespaciales, puedes usar “createIndex()” como se muestra en el siguiente ejemplo:
```
db.collection.createIndex({
```
Estos son solo los pasos y ejemplos iniciales. La operación y aplicación reales dependerán de tus propios requerimientos. Si quieres aprender más, te sugeriría que revises la documentación oficial de MongoDB.