Database

[{"array":[1,2,3,4],"string":"doc1"},{"array":[3,4,5],"string":"doc2"}]

Query

db.collection.aggregate([{$addFields:{size:{$size:"$array"},intersectionSize:{$size:{$setIntersection:[[2,3,4],"$array"]}}}},{$sort:{intersectionSize:-1,size:1}},{$limit:1},{$project:{size:0,intersectionSize:0}}])

Result