Atlas $search how to return only matching sub-documents

A multi-stage aggregation pipeline might help.

Use the indexed search as first stage to find related documents, then use $unwind stage on selected documents, then $match on the next stage again to get the related sub-documents, add a grouping signature then group together by that signature.

This is not a perfect solution though but might at least help for a while until you get a better solution.