Query elemMatch Date
The $date operator is a part of the MongoDB Extended JSON spec and that's what you get as default with mongoexport but you don't want to use it in the query criteria.

Try using the ISODate() constructor instead:

db.analysisDTO.find({"signals" : {
        "$elemMatch" : { 
           "date" : { 
             "$gte" : new ISODate("2001-12-01T22:00:00.000Z")}}}});


The reason for the 7 minute length is likely because the entire data set is being scanned into memory to check all fields.