Selecting the appropriate shard to send a query to takes a long time on $in queries. SERVER-4745 mitigates the affect of this, but this code could use rewriting and further optimization.
MongoS does not re-write $in queries which results in all terms in $in array being sent to all shards
Shard Targeting for $in statements
Figuring out which shard to send a query to takes a long time when doing large $in queries on the shard key
check and clean sharding utilization of queryutil code
Mongos should re-write $in queries on the shard key before sending them to the shards so that the shards only receive the relevant portion of the $in