mongo cluster collection count showing different every time
First, of course you are always connecting to your cluster thru mongoS, so query (count) goes to cluster and not directly to one individual shard.

Second, you are connected to right DB when you do count, I have seen situations where user has accidentally changed/connected to wrong DB and count (of course) return NULL, because that collection don't exists on that current DB.  

You can always use 


  db.getSisterDB("yourDB").collection.count() 


where ever you are...

Actually count() returns "cached" (metadata) count from collection, if you want to have absolute value, use


  db.getSisterDB("yourDB").collection.find({_id:{ $gt: MinKey,
  $lt:MaxKey} }, {_id:1}).itcount()


what is "slow" operation because it really goes in the collection and count how many documents is there.