Here is the data structure for each document in the collection. The datastructure is fixed.
{
  '_id': 'some-timestamp',
  'RESULT': [ 
              {
               'NUMERATION': [ // numeration of divisions
                    {
                                      // numeration of producttypes
                       'DIVISIONX': [{'PRODUCTTYPE': 'product xy', COUNT: 100}] 
                    }
                ]
              }
            ]
}
The query result should be in the same structure but only contain producttypes matching a regular expression.
I tried using an nested $elemMatchoperator but this doesn't get me any closer. I don't know how I can iterate each value in the producttypes array for each division. 
How can I do that? Then I could apply $pop, $in and $each.
I looked at:
- Querying an array of arrays in MongoDB
 - https://docs.mongodb.com/manual/reference/operator/update/each/
 - https://docs.mongodb.com/manual/reference/operator/update/pop/
 
... and more
The solution I want to avoid is writing something like this:
collection.find().forEach(function(x) { /* more for eaches */ })
Edit: Here is an example document to copy:
{"_id":"5ab550d7e85d5930b0879cbe","RESULT":[{"NUMERATION":[{"DIVISION":[{"PRODUCTTYPE":"Book","COUNT":10},{"PRODUCTTYPE":"Giftcard","COUNT":"300"}]}]}]}
E.g. the query result should only return the entry with the giftcard:
{"_id":"5ab550d7e85d5930b0879cbe","RESULT":[{"NUMERATION":[{"DIVISION":[{"PRODUCTTYPE":"Giftcard","COUNT":"300"}]}]}]}