Database

[{_id:1,id:1,room:"Room1",notifications:[{id:1,read:["User1"]},{id:2,read:["User1"]},{id:3,read:[]},{id:4,read:[]},{id:5,read:[]}],subRoom:[{id:"SubRoom1",notifications:[{id:1,read:[]},{id:2,read:[]},{id:3,read:[]},{id:4,read:[]},{id:5,read:[]}]},{id:"SubRoom2",notifications:[{id:1,read:["User1"]},{id:2,read:["User1"]},{id:3,read:[""]},{id:4,read:[]},{id:5,read:[]}]}]}]

Query

db.collection.find({id:1},{_id:0,room:1,notRead:{$size:{$filter:{input:"$notifications",cond:{$not:{$in:["User1","$$this.read"]}}}}},"subRoom":{$map:{input:"$subRoom",in:{id:"$$this.id",notRead:{$size:{$filter:{input:"$$this.notifications",cond:{$not:{$in:["User1","$$this.read"]}}}}}}}}})

Result