Database

db={"plots":[{_id:ObjectId("6426b069ca83da130cdb7f70"),x:0,y:0,_class:"com.vilya.farm.domain.model.Plot"}],"users_have_plots":[{_id:ObjectId("6426b073ca83da130cdb7f71"),userId:"6412c76956d4170a7de34d92",plot:{"$ref":"plots","$id":ObjectId("6426b069ca83da130cdb7f70")},_class:"com.vilya.farm.domain.model.UserPlot"}],"users":[{_id:ObjectId("6412c76956d4170a7de34d92"),email:"abc@abc.com",password:"$2a$10$s9VgOYd.fOKZF66TnAsjWemiCYkA7aG45NJpuSNgbVxpcIGF7fWqu",firstName:"f",lastName:"l",plots:[{"$ref":"users_have_plots","$id":ObjectId("6426b073ca83da130cdb7f71")}],_class:"com.vilya.farm.domain.model.User"},{_id:ObjectId("6414667360e4ba4481052627"),email:"abc1@abc.com",password:"$2a$10$OP52phZ61l2JX2e2TQOu9ubYFBYcPeqEZ92ox2Nyyp5e.MEZk7GhS",firstName:"f",lastName:"l",_class:"com.vilya.farm.domain.model.User"}]}

Query

db.users.aggregate([{"$lookup":{"from":"users_have_plots","let":{"plots":"$plots"},"pipeline":[{"$match":{"$expr":{"$in":["$_id",{"$ifNull":["$$plots.$id",[]]}]}}},{"$lookup":{"from":"plots","localField":"plot.$id","foreignField":"_id","as":"plot"}}],"as":"plots"}}])

Result