Database
[{"prop1":false,"prop2":"a","subdocuments":[{"subprop1":1,"subprop2":10},{"subprop1":30,"subprop2":40},{"subprop1":10,"subprop2":1}]},{"prop1":false,"prop2":"b","subdocuments":[{"subprop1":1,"subprop2":10},{"subprop1":30,"subprop2":40},{"subprop1":10,"subprop2":1}]}]
Query
db.collection.aggregate([{"$match":{"prop1":false,"$or":[{"subdocuments.subprop1":{"$lt":3}},{"subdocuments.subprop2":{"$lt":5}}]}},{"$addFields":{"subdocumentCount":{$size:{"$filter":{"input":"$subdocuments","as":"s","cond":{"$or":[{$lt:["$$s.subprop1",3]},{$lt:["$$s.subprop2",5]}]}}}}}},{$group:{_id:"$prop2",documentCount:{$sum:1},subdocumentCount:{$sum:"$subdocumentCount"}}},{$project:{_id:0,k:"$_id",v:{documentCount:"$documentCount",subdocumentCount:"$subdocumentCount"}}},{$group:{_id:null,docs:{$push:"$$ROOT"}}},{"$addFields":{"docs":{"$arrayToObject":"$docs"}}},{"$replaceRoot":{"newRoot":"$docs"}}])