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]]}}]}]}}}}}])