2016-12-02 2 views
0

Я экспериментирую с запросом geoNear от mongoDB. У меня есть коллекция с одним документом внутри:MongoDB geoNear запрос по старым данным возвращает неточное расстояние

{ 
       "_id": { 
        "$oid": "583d169df18ef10012ae8345" 
       },     
       "location": { 
        "loc": [ 
         103.7652117, 
         1.3150887 
        ], 
        "name": "", 
        "_id": { 
         "$oid": "583d169df18ef10012ae8346" 
        } 
       }, 

} 

Поле location.loc индексируется по 2d. Тогда я использовал запрос geoNear по команде MongoDB

{ 
     "geoNear": "users", 
     "near": [103.761614, 1.3172431], 
     "num": 10 
    } 

В результате расстояние вернулся из MongoDB является 0.004193433515629152 радиан, что соответствует более 20 км. Однако эти 2 координаты находятся всего в 0,5 км друг от друга. Есть ли что-то, что я сделал неправильно? Я знаю, что это должно быть очень глупо, но я просто не мог понять.

ответ

0

Если вы хотите запросить связанные с $geoWithin or $centerSphere or $geoNear структуры расположения, как это только: -

"location" : { 
     "lng" : 77.15319738236303, 
     "lat" : 28.434568229025803 
    }, 

А затем запустить запрос. Это даст вам точный результат.

+0

Привет, Ашутош, вы хотите сказать, что структура документа неверна? Я считаю, что mongoDB поддерживает вложенные объекты местоположения? – Bin

Смежные вопросы