En un índice 2D, la precisión de la ubicación se define por el tamaño en bits de los valores geohash que se utilizan para almacenar los datos indexados. Por defecto, los índices 2d utilizan 26 bits de precisión, lo que equivale aproximadamente a dos pies (60 centímetros).
La precisión de la ubicación afecta el rendimiento de las operaciones de inserción y lectura.
Para cambiar la precisión por defecto, especifica un valor de bits cuando crees el índice 2D. Puedes especificar un valor de bits entre 1 y 32, inclusive.
db.<collection>.createIndex( { <location field>: "2d" }, { bits: <bit precision> } )
Acerca de esta tarea
La precisión de la ubicación afecta el rendimiento de la query:
Una menor precisión mejora el rendimiento de las operaciones de inserción y actualización, y utiliza menos almacenamiento.
Una mayor precisión mejora el rendimiento de las operaciones de lectura porque las consultas escanean partes más pequeñas del índice para devolver los resultados.
La precisión de la ubicación no afecta la exactitud del query. Las coordenadas de la cuadrícula siempre se utilizan en el procesamiento final de query.
Antes de comenzar
Crear la colección contacts:
db.contacts.insertMany( [ { name: "Evander Otylia", phone: "202-555-0193", address: [ 55.5, 42.3 ] }, { name: "Georgine Lestaw", phone: "714-555-0107", address: [ -74, 44.74 ] } ] )
El campo address contiene legacy coordinate pairs.
Procedimiento
Crea un índice en 2D en el campo address. Especifique una precisión de ubicación de 32 bits:
db.contacts.createIndex( { address: "2d" }, { bits: 32 } )
Próximos pasos
Puedes usar el índice 2d para realizar cálculos sobre datos de ubicación, como consultas de proximidad.