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.id":1,"subRoom.notRead":{$size:{$filter:{input:"$subRoom.notifications",cond:{$not:{$in:["User1","$$this.read"]}}}}}})

Result