Resumen

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:

...
<campo>: {
  type: <tipo de dato GeoJSON>,
  coordinates: [ <longitud>, <latitud> ]
}
...

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:

db.<coleccion>.createIndex({
  <nombre del campo>: <tipo de indice>
})

Donde el tipo de índice puede ser 2dsphere o 2d.