Database

[{views:[{userId:1,groupId:[1,2,4]},{userId:2,groupId:[2,4]},{userId:1,groupId:[3,5]}]}]

Query

db.collection.aggregate([{$project:{views:{$size:{$ifNull:[{$filter:{input:"$views",as:"view",cond:{$gt:[{$size:{$setIntersection:["$$view.groupId",[1,3,5]]}},0]}}},[]]}}}}])

Result