Ho una collezione di negozi con un indice geospaziale nella posizione corretta.Query vincolate MongoDB: come posso convertire il miglio in radiante?
Quello che sto cercando di fare è dato latitudine, latitudine dell'utente e un raggio di ricerca (mi), voglio restituire l'elenco dei negozi che si trovano all'interno di quei parametri.
Ho visto il seguente esempio nella documentazione di MongoDB (http://www.mongodb.org/display/DOCS/Geospatial+Indexing), ma sembra che la distanza sia in radianti.
center = [50, 50]
radius = 10
db.places.find({"loc" : {"$within" : {"$center" : [center, radius]}}})
Quindi, qual è la formula per convertire le miglia in radianti?
Soluzione Le persone fantastiche di mongodb-user mi hanno aiutato a trovare la risposta. Fondamentalmente, quello che stavo davvero cercando era un modo per limitare la distanza.
Per la documentazione aggiornata, v'è un terzo parametro al $ nei pressi di query: È inoltre possibile utilizzare $ vicino con una distanza massima
db.places.find({ loc : { $near : [50,50] , $maxDistance : 5 } }).limit(20)
Il valore per $ maxDistance è in radianti; così, ho dovuto prendere la mia distanza in miglia e dividerlo per 69.
Grazie!
sono stato in grado di trovare la mia risposta inviando la mia domanda sul mongdb-utente di Google Group (http://groups.google.com/group/mongodb-user/browse_thread/filetto/d37c781bbfff5f08). – Abe
Nota: la divisione per 69 è una conversione approssimativa da miglia a * gradi *, non radianti. I gradi sono corretti qui perché questa è una semplice query '$ $ near' (che significa '$ maxDistance' deve essere nella stessa unità di cui sono le coordinate), non una query sferica (che * do * richiede' $ maxDistance' a essere in radianti). –