Para compilar un índice geoespacial 2d, utiliza el
db.collection.createIndex() método y especificar 2d. Utiliza la siguiente sintaxis:
db.<collection>.createIndex( { <location field> : "2d" , <additional field> : <value> } , { <index-specification options> } )
El índice 2d utiliza las siguientes opciones opcionales de especificación de índice:
{ min : <lower bound> , max : <upper bound> , bits : <bit precision> }
Definir rango de ubicación para un índice 2d
Por defecto, un índice 2d asume longitud y latitud y tiene límites de -180 incluyentes y 180 no incluyentes. Si los documentos contienen datos de coordenadas fuera del rango especificado, MongoDB devuelve un error.
Importante
Los límites por defecto permiten que las aplicaciones inserten documentos con latitudes no válidas superiores a 90 o inferiores a -90. El comportamiento de las queries geoespaciales con puntos no válidos no está definido.
En los índices 2d se puede cambiar el rango de ubicación.
Puedes compilar un índice geoespacial 2d con un rango de ubicación distinto al por defecto. Usa las opciones min y max al crear el índice. Utiliza la siguiente sintaxis:
db.collection.createIndex( { <location field> : "2d" } , { min : <lower bound> , max : <upper bound> } )
Definir la Precisión de Ubicación para un Índice 2d
Por defecto, un índice 2d en legacy coordinate pairs utiliza 26 bits de precisión, lo que equivale aproximadamente a 2 pies o 60 centímetros de precisión usando el rango predeterminado de -180 a 180. La precisión se mide por el tamaño en bits de los valores de geohash usados para almacenar datos de ubicación. Puedes configurar índices geoespaciales con hasta 32 bits de precisión.
La precisión del índice no afecta la exactitud de la query. Las coordenadas reales de la cuadrícula se utilizan siempre en el procesamiento final de la query. Las ventajas de una precisión menor son una menor sobrecarga de procesamiento para las operaciones de inserción y el uso de menos espacio. Una ventaja de una mayor precisión es que las consultas analizan porciones más pequeñas del índice para devolver resultados.
Para configurar una precisión de ubicación diferente a la por defecto, usa la opción bits al crear el índice. Utiliza la siguiente sintaxis:
db.<collection>.createIndex( {<location field> : "<index type>"} , { bits : <bit precision> } )
Para obtener información sobre los aspectos internos de los valores geohash, consulta Cálculo de valores Geohash para índices 2d.