Tengo una colección de tiendas con un índice geospacial en el lugar apropiado.MongoDB Bound Queries: ¿Cómo convierto milla a radianes?
Lo que estoy tratando de hacer es dada la latitud del usuario, la latitud y el radio de búsqueda (mi), quiero devolver la lista de tiendas que están dentro de esos parámetros.
Vi el siguiente ejemplo en la documentación de MongoDB (http://www.mongodb.org/display/DOCS/Geospatial+Indexing), pero parece que la distancia está en radianes.
center = [50, 50]
radius = 10
db.places.find({"loc" : {"$within" : {"$center" : [center, radius]}}})
Entonces, ¿cuál es la fórmula para convertir millas a radianes?
Solución La gente increíble de mongodb-user me ayudó a encontrar la respuesta. Básicamente, lo que realmente estaba buscando era una forma de limitar la distancia.
Per, la documentación actualizada, hay una tercera parámetro a la cerca de $ consulta: También puede utilizar cerca de $ con una distancia máxima
db.places.find({ loc : { $near : [50,50] , $maxDistance : 5 } }).limit(20)
El valor de $ maxDistance está en radianes; entonces, tuve que tomar mi distancia en millas y dividirla por 69.
¡Gracias!
pude encontrar mi respuesta mediante la publicación de mi pregunta sobre la mongdb-usuario de Google Grupo (http://groups.google.com/group/mongodb-user/browse_thread/thread/d37c781bbfff5f08). – Abe
Nota: dividir por 69 es una conversión aproximada de millas a * grados *, no radianes. Los grados son correctos aquí porque esta es una consulta simple ol '' $ near' (lo que significa '$ maxDistance' debe estar en las mismas unidades que las coordenadas), no una consulta esférica (que * do * requiere' $ maxDistance' para estar en radianes). –