Les docs MongoDB disent que vous pouvez passer un booléen de délai d'attente, et ce délai est faux, il n'arrivera jamais à expiration
collection.find({"type" => "a"}, {:timeout=>false})
Dans votre cas :
Record.collection.find({:type=>'a'}, :timeout => false).each ...
Je vous recommande également de vous pencher sur la carte réduite avec Mongo. Il semble plus adapté à ce type de manipulation de tableau de collecte :http://www.mongodb.org/display/DOCS/MapReduce