Die MongoDB-Dokumentation sagt, dass Sie ein boolesches Timeout übergeben können, und das Timeout falsch ist, es wird niemals ein Timeout geben
collection.find({"type" => "a"}, {:timeout=>false})
In Ihrem Fall:
Record.collection.find({:type=>'a'}, :timeout => false).each ...
Ich empfehle Ihnen auch, sich mit Mongo Map-Reduced anzusehen. Es scheint auf diese Art der Manipulation von Sammlungs-Arrays zugeschnitten zu sein:http://www.mongodb.org/display/DOCS/MapReduce