我有一个嵌入了很多通知的用户模型,我必须遍历用户集合,然后循环遍历每个通知以删除它。
首先我得到了游标超时错误,然后使用这个步骤方法(我在某处阅读)和“仅”标准。我的实际循环代码是这样的:
per_batch = 20
users_targeted = User.only(:notifications, :slug).where(:notifications_count.gt => 40).asc(:slug)
0.step(users_targeted.count, per_batch) do |offset|
users_targeted.limit(per_batch).skip(offset).each do |user|
user.notifications.only(:_id).read.desc(:updated_at).skip(40).each do |n|
n.destroy
end
end
end
现在,当循环播放3k-4k用户时,Heroku dyno的内存超出了限制并且循环停止。
有没有人知道这个问题的解决方案?我必须做很多这样的循环,所以这对我来说很麻烦。
答案 0 :(得分:0)