Database

db={"persons":[{"name":"Person A","location":{"type":"Point","coordinates":[180,90]}},{"name":"Person B","location":{"type":"Point","coordinates":[-180,-90]}}],"places":[{"name":"Store A","location":{"type":"Point","coordinates":[180,90]}},{"name":"Store B","location":{"type":"Point","coordinates":[-180,-90]}}]}

Query

db.persons.aggregate([{$lookup:{from:"places",let:{"personPoint":"$location"},as:"nearestPlace",pipeline:[{$geoNear:{near:{type:"Point",coordinates:"$$personPoint"},spherical:true,distanceField:"distance",maxDistance:50,}},{$unwind:"$location"},]}},{$unwind:{path:"$nearestPlace",preserveNullAndEmptyArrays:true}}])

Result