There are several facts you should keep in mind:
Number 1- MongoDB returns only the whole document depending on whether it hit or not, there is no feature to return only a part of it (10 October, 2011) and if you need filtering you have to implement it with you own code.
Number 2- pay attention to elemmatch keyword. It indicates to search for some hits only in the same subdocument but not htourghout the whole document, so you might be confused here.
Number 3 - there is not right strategy of dividing your aggregate into collection in mongo comparing to RDBMS-s. So different data representation might solve your case.
Number 4 - despite of number 3 remark about the "no right way", there is a general recommendation to keep your documents less than 10 MB size