Yeah it’s pretty much inevitable having to filter with a loop. Even with a sphere collision component, the result doesn’t end up much different than if you just ran a loop on a multi sphere trace. Because if you think about it, if 100 components trigger the sphere collision in one frame, it’s going to trigger that overlap event 100 times.
But thankfully c++ can do that kind of thing extremely fast, so if you can stomach it, make a c++ function to filter it. If you can’t, feel free to ask for help