MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Грешно изчисление на разстоянието с MongoDB

MongoDB приема, че координатите са в (long, lat) формат. Ако изчислявате разстоянията на ръка, като използвате разстояние с голям кръг, ще видите какво се случва:

> from math import acos, sin, cos, radians
>
> long_x, lat_x = [radians(y) for y in [52.473266, 13.45494]]
> long_y, lat_y = [radians(y) for y in [52.497309, 13.39385]]
>
> acos(sin(lat_x) * sin(lat_y) + cos(lat_x) * cos(lat_y) * cos(long_x - long_y)) * 6371.0
7.27362435031

Google приема координати в (lat, long) формат, така че ако предоставите същия вход, интерпретацията на Google ще бъде както следва:

> acos(sin(long_x) * sin(long_y) + cos(long_x) * cos(long_y) * cos(lat_x - lat_y)) * 6371.0
4.92535867182



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Намерете обекти между две дати MongoDB

  2. MongoDB:Комбинирайте данни от множество колекции в една..как?

  3. Как да постигнем връщане назад в транзакции в mongo?

  4. Как да направя заявка NOT IN в Mongo?

  5. Опцията useFindAndModify не се поддържа