Para crear un índice geoespacial 2d, utilice 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 consulta. Las coordenadas reales de la cuadrícula siempre se utilizan en el procesamiento final de la consulta. 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 precisión mayor es que las consultas escanean porciones más pequeñas del índice para devolver los 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 componentes internos de los valores geohash, consulte Cálculo de valores geohash para 2d índices.