Puede definir el rango de coordenadas incluido en una 2d índice. Por defecto, los índices 2d tienen límites de longitud y latitud de:
Mayor o igual que
-180Menos de
180
Para cambiar el rango de ubicación de un índice 2d, especifica las opciones min y max cuando crees el índice:
db.<collection>.createIndex( { <location field>: "2d" }, { min: <lower bound>, max: <upper bound> } )
Los límites min y max son inclusivos y se aplican tanto a la longitud como a la latitud.
Acerca de esta tarea
Importante
Los límites de ubicación por defecto para los índices 2D permiten latitudes inferiores a -90 y superiores a 90, que son valores no válidos. El comportamiento de las consultas geoespaciales con estos puntos no válidos no está definido.
Definir un rango de ubicación más pequeño para un índice 2D reduce la cantidad de datos almacenados en el índice, y puede mejorar el rendimiento de las query.
No se puede crear un índice 2d si la colección contiene datos de coordenadas fuera del rango de ubicación del índice.
Después de crear un índice 2d, no se puede insertar un documento que contenga datos de coordenadas fuera del rango de ubicación del índice.
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 los siguientes límites de ubicación:
minlímite de-75maxlímite de60
db.contacts.createIndex( { address: "2d" }, { min: -75, max: 60 } )
Resultados
El índice cubre un rango de ubicación menor y tiene un mejor rendimiento que un índice 2D por defecto.
Después de crear el índice, no se puede insertar un documento que contenga datos de coordenadas fuera del rango de ubicación del índice. Por ejemplo, no se puede insertar el siguiente documento:
db.contacts.insertOne( { name: "Paige Polson", phone: "402-555-0190", address: [ 70, 42.3 ] } )
El campo address tiene un valor de longitud de 70, que es mayor que el límite max de 60.
Próximos pasos
Puedes usar el índice 2d para realizar cálculos sobre datos de ubicación, como consultas de proximidad.