Как использовать самоопределенную функцию mongodb

Я пытаюсь использовать самоопределяемую функцию в mongodb для вычисления некоторых значений, но понятия не имею, как ее использовать. Существуют значения avgStartLongitude, avgStartLatitude, avgEndLongitude и avgEndLatitude. Сгруппированы по активности. Это показывает местоположение деятельности, которая началась и где-то закончилась. Мне нужно рассчитать расстояние между ними с помощью функции.

Это коллекция, из которой необходимо выполнить расчет: http://prntscr.com/d3cn4m

Следующий код показывает (таким образом, что это не работает), как я пытаюсь использовать функцию для расчета:

function calcDistance(lat1, lon1, lat2, lon2) {
var R = 6371; // Radius of the earth in km
  var dLat = (lat2 - lat1) * Math.PI / 180;  // deg2rad below
  var dLon = (lon2 - lon1) * Math.PI / 180;
  var a = 
     0.5 - Math.cos(dLat)/2 + 
     Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) * 
     (1 - Math.cos(dLon))/2;

  return (R * 2 * Math.asin(Math.sqrt(a)))<100;
};

db.opg3.aggregate(
{
    $project:
    {
        activityType:"$_id",
        avgDistance:"$calcDistance($avgStartLat,$avgStartLon,$avgEndLat,$avgEndLon)"
        
    }
    
}
)

Код не возвращает avgDistance. На самом деле это, кажется, ничего не делает, и я понятия не имею, как заставить это работать..

Любые идеи о том, как я должен использовать эту функцию?

Спасибо!

0 ответов

Другие вопросы по тегам