Database

[{"_id":3,"tripid":11,"geom_lnglat":{"type":"Point","coordinates":[4.306468999999999,50.873466799999974]},"vehid":2},{"_id":0,"tripid":1,"geom_lnglat":{"type":"Point","coordinates":[4.4579241,50.88904930000001]},"vehid":1},{"_id":2,"tripid":1,"geom_lnglat":{"type":"Point","coordinates":[4.457,50.8893]},"vehid":3}]

Query

db.collection.aggregate([{$lookup:{from:"collection",as:"result",let:{vehid:"$vehid",coordinates:"$geom_lnglat.coordinates"},pipeline:[{$match:{$expr:{$ne:["$vehid","$$vehid"]}}},{$set:{square_distance:{/** (lon_1 - lon_2)² + (lat_1 - lat_2)²*/$add:[{$pow:[{$subtract:[{$first:"$$coordinates"},{$first:"$geom_lnglat.coordinates"}]},2]},{$pow:[{$subtract:[{$last:"$$coordinates"},{$last:"$geom_lnglat.coordinates"}]},2]}]}}},{$sort:{square_distance:1}},{$limit:1}]}},{$set:{result:{$first:"$result"}}}])

Result