Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /
2d

Calcular la distancia 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 antes mencionadas utilizan radianes como medida de distancia. Otros operadores del query esférica no lo hacen, como $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