レコードのセットを処理して別のコレクションに保存するrakeタスクがあります。
batch = []
Record.where(:type => 'a').each do |r|
batch << make_score(r)
if batch.size %100 == 0
Score.collection.insert(batch)
batch = []
end
end
一度に約10万件のレコードを処理しています。残念ながら、20分でQuery response returned CURSOR_NOT_FOUNDエラーが発生します。
mongodbのよくある質問では、タイムアウトを使用またはオフにするように指示されています。タイムアウトを使用すると、すべてが約2〜3倍遅くなります。skiplimit
mongoidと組み合わせてタイムアウトをオフにするにはどうすればよいですか?