Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
2d

Calcular distancias usando geometría esférica

Advertencia

Para consultas esféricas, use el 2dsphere resultado del índice.

El uso del índice 2d para consultas esféricas puede generar resultados incorrectos, como el empleo del índice 2d para consultas esféricas que envuelven los polos.

El índice 2d es compatible con consultas que calculan distancias en un plano euclidiano (superficie plana). El índice también admite los siguientes operadores del query y comando que calculan distancias utilizando geometría esférica:

Nota

Si bien las queries básicas que utilizan la distancia esférica son compatibles con el índice 2d, considera pasar a un índice 2dsphere si tus datos son principalmente de longitud y latitud.

  • $nearSphere

  • $centerSphere

  • $near

  • Etapa de pipeline $geoNear con la opción spherical: true

Importante

Las operaciones mencionadas utilizan radianes para la distancia. Otros operadores de consulta esféricos, como, no lo hacen.$geoWithin

Para que los operadores del query esférica funcionen correctamente, debes convertir las distancias a radianes y convertir de radianes a las unidades de distancia utilizadas por tu aplicación.

Para convertir:

  • distancia en radianes: divide la distancia por el radio de la esfera (por ejemplo, la Tierra) en las mismas unidades que la medición de la distancia.

  • Radianes a distancia: multiplica la medida en radianes por el radio de la esfera (por ejemplo, la Tierra) en el sistema de unidades al que deseas convertir la distancia.

El radio ecuatorial de la Tierra es de aproximadamente 3,963.2 millas o 6,378.1 kilómetros.

La siguiente query devolvería documentos de la colección places dentro del círculo descrito por el centro [ -74, 40.74 ] con un radio de 100 millas:

db.places.find( { loc: { $geoWithin: { $centerSphere: [ [ -74, 40.74 ] ,
100 / 3963.2 ] } } } )

Nota

Importante

Si especifica coordenadas de longitud y latitud, enumera primero la longitud y luego la latitud.

  • Los valores de longitud válidos están entre -180 y 180, ambos inclusive.

  • Los valores de latitud válidos están entre -90 y 90, ambos inclusive.

Volver

Componentes internos del índice 2d