MongoDB Bound Queries: Comment convertir mile en radian?
J'ai une collection de magasins avec un geospacial indice sur l'emplacement propery.
Ce que je suis en train de faire est d'attribuer à l'utilisateur de la latitude, de la latitude et de le rayon de recherche (mi), je veux retourner la liste des magasins qui sont à l'intérieur de ces paramètres.
J'ai vu l'exemple suivant sur la MongoDB documentation (http://www.mongodb.org/display/DOCS/Geospatial+d'Indexation), mais il semble que la distance est en radians.
center = [50, 50]
radius = 10
db.places.find({"loc" : {"$within" : {"$center" : [center, radius]}}})
Alors, quelle est la formule pour convertir des miles en radians?
Solution
Le peuple génial à mongodb-utilisateur m'a aidé à trouver la réponse.
Fondamentalement, ce que j'étais vraiment à la recherche d'un moyen de limiter la distance.
Par, la documentation mise à jour, il y a un 3ème paramètre à la somme de près de requête:
Vous pouvez aussi utiliser $près, à une distance maximale
db.places.find( { loc : { $near : [50,50] , $maxDistance : 5 } } ).limit(20)
La valeur de $maxDistance est en radians; donc, j'ai dû prendre mes distance de km et le diviser par 69.
Merci!
source d'informationauteur Abe
Vous devez vous connecter pour publier un commentaire.
Que les docs disent:
Toutes les distances utiliser des radians. Ceci vous permet de facilement multiplier par le rayon de la terre (environ 6371 km ou 3959 miles) pour obtenir la distance dans le choix de vos unités. A l'inverse, le diviser par le rayon de la terre lors des requêtes.
simple de sorte que vous devez diviser votre rayon par le rayon de la terre.
dans votre exemple, il serait:
Afin d'utiliser mongodb $près de requêtes avec des km de limites, vous avez besoin de convertir la valeur du rayon de km. Par défaut, mongodb $près accepte $maxDistance comme rayon.
Convertir distance par 111.12 (un degré est d'environ 111.12 kilomètres) lors de l'utilisation de km, ou de laisser de la distance comme il est sur l'utilisation du degré
laisser si votre rayon en km puis utilisez
mais si votre rayon en km puis de le convertir en km