MongoDB replicate data item across multiple shards
Create 'c' -database 
Add  c -collection
Shard this collection with _id
Set this collection balacing:false
Pre-split this collection with _id values: 0,1,2,3,.. (or your real shard names). How many shards you have; one per shard
With moveChunk command, move one chunk to every shard, so that right _id is on right shard.


Now if you update this c.c's counter-key with $inc -operator (what is atomic operation) and without _id is set but multi:true, you can always "query" min value of that counter-key and answer tells what shard and what was value.

db.getSiblingDB('c').c.update({},{$inc:{"counter":1}},{multi:true})