2017-02-22 26 views
0

У меня есть коллекция «машина» с документом

 

    { 
     "_id" : "ac9d1db9-6a0d-47c6-97d3-a613c8dd0031", 
     "pin" : { 
      "machine":"test1", 
      "position" : [ 
       -1.5716, 
       54.7732 
      ] 
     } 
    } 

Note: -1.5716 is lng and 54.7732 is lat 

Я создал 2dsphere индекс на документе

 

    db.machine.createIndex({ 'pin.position' : "2dsphere" }) 

Стараюсь с 2 разными версиями запроса (только разница в запросе - это поле ближнего поля на этапе геоинформационного трубопровода)

Запрос 1:

 

    db.machine.aggregate(
     [ 
     { 
      "$geoNear":{ 
       "near": [-0.2129092,51.5031594], 
       "limit":100, 
       "maxDistance":500*1000, 
       "distanceField": "dist.calculated", 
       "includeLocs": "dist.location", 
       "distanceMultiplier":1/1000, 
       "spherical": true 
     } 

     } 
     ] 
    ) 

Note: -0.2129092 is lng and 51.5031594 is lat 

Query 2

 

    db.machine.aggregate(
     [ 
     { 
      "$geoNear":{ 
       "near": { type: "Point", coordinates: [-0.2129092,51.5031594] }, 
       "limit":100, 
       "maxDistance":500*1000, 
       "distanceField": "dist.calculated", 
       "includeLocs": "dist.location", 
       "distanceMultiplier":1/1000, 
       "spherical": true 
     } 

     } 
     ] 
    ) 

Note: -0.2129092 is lng and 51.5031594 is lat 

запроса 1 возвращает мне документ и предусматривает, что этот документ является 5.88161133560063e-05 Kms от поиска координат

Запрос 2 возвращает мне документ и предусматривает, что этот документ находится на расстоянии 375,135052595944 км от поисковых координат

Я перекрестно проверить расстояние между этими LNG/лат на сайте http://andrew.hedges.name/experiments/haversine/ и увидеть, что расстояние между документом и поиска координат составляет около 374.835 Kms

кажется Query 2 является обеспечение правильного результата, но я не уверен, в чем разница между Query 1 и Query 2, и если я использую его неправильно.

Пожалуйста посоветуйте

ответ

0

запроса 1 обеспечивает расстояние парами устаревших координатных и запрос 2 provices расстояние в метрах (GeoJSON) и, следовательно, оба запроса используют разные единицы

Пожалуйста, проверьте ссылку https://jira.mongodb.org/browse/SERVER-16652?jql=text%20~%20%22geoNear%22