Database

db={restaurants:[{_id:1,name:"Burger King",location:{type:"Point",coordinates:[11.111,11.111]},isOpen:true},{_id:2,name:"McDonald's",location:{type:"Point",coordinates:[22.222,22.222]},isOpen:true},{_id:3,name:"Chick-fil-A",location:{type:"Point",coordinates:[33.333,33.333]},isOpen:true}],products:[{_id:1,name:"Breakfast Whopper Jr.",price:"$1.29",isAvailable:true,isApproved:true,isArchived:false,},{_id:2,name:"Big Mac",price:"$4.35",isAvailable:true,isApproved:true,isArchived:false,},{_id:3,name:"Spicy Chicken Sandwich",price:"$3.29",isAvailable:true,isApproved:true,isArchived:false,restaurant:3}]}

Query

db.products.aggregate([{$match:{"isApproved":true,"isAvailable":true,"isArchived":false}},{$lookup:{from:"restaurants",foreignField:"_id",localField:"restaurant",as:"restaurant"}},{$match:{"restaurant.isOpen":true}},{$project:{"restaurant.isOpen":1,"isApproved":1,"isAvailable":1,"isArchived":1,"name":1,"restaurant.location":1}},{$match:{"location":{$geoWithin:{$centerSphere:[[22.222,22.222],5/6378.1] //sample coordinates } } }} ])

Result