Database

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

Query

db.collection.aggregate([{$project:{views:{$reduce:{input:"$views",initialValue:0,in:{$add:["$$value",{$min:[1,{$size:{$setIntersection:["$$this.groupId",[1,3,5]]}}]}]}}}}}])

Result