Как использовать самоопределенную функцию 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. На самом деле это, кажется, ничего не делает, и я понятия не имею, как заставить это работать..
Любые идеи о том, как я должен использовать эту функцию?
Спасибо!