MongoDB contempla la posibilidad de manejar datos que hacen referencia a posicionamiento geoespacial; esto es, coordenadas de ubicación de un punto en el globo terráqueo. Para ello MongoDB utiliza el estándar GeoJSON que es básicamente una convención de tipos predefinidos y un formato de coordenadas.
La sintaxis de un dato en formato GeoJSON es la siguiente:
La convención GeoJSON establece que cualquier dato de tipo geoespacial se debe definir como un objeto JSON que tenga obligatoriamente estos dos campos: type y coordinates en el formato indicado anteriormente.
Para efectos de nuestros ejemplos solo usaremos el tipo Point, pero hay otros tipos más que puedes consultar en la documentación oficial de GeoJSON.org para MongoDB.
Si posteriormente quisiéramos realizar búsquedas cobre un campo que hemos definido como GeoJSON, sería necesario crearle un índice de la siguiente manera:
como implemento las busquedas en mi backend por ejemplo PHP
Yo he probado con esto, aunque solo para probar, nunca en produccion
La referencia mencionada es muy útil.
Claro, createIndex({location_field: type}) se utiliza para crear un índice geoespacial en una base de datos, como MongoDB. El parámetro location_field representa el campo que contiene la información geoespacial, y type especifica el tipo de índice que se creará.
Type: 2dsphere:
Ejemplo de uso:createIndex({location: "2dsphere"})
Caso real: Supongamos que tienes una colección de lugares con coordenadas geoespaciales (latitud, longitud). Al usar 2dsphere, puedes realizar consultas espaciales más complejas, como encontrar lugares dentro de un radio específico o calcular distancias entre ubicaciones.
Type: 2d:
Ejemplo de uso:createIndex({location: "2d"})
Caso real: Si tus datos geoespaciales son planos, como un mapa bidimensional, puedes utilizar 2d. Esto es útil para consultas básicas de proximidad, pero no es tan preciso como 2dsphere en áreas grandes o cerca de los polos.
Ejemplo de uso en MongoDB:
// Crear un índice 2dsphere para un campo de ubicacióndb.places.createIndex({location:"2dsphere"});
Este índice mejorará la eficiencia de las consultas espaciales en el campo de ubicación de la colección "places".