【发布时间】:2011-12-01 18:29:55
【问题描述】:
我有一个 rake 任务,旨在将遗留数据库字段迁移到 Hash:
task :degrees => :environment do
Person.all.each do |p|
if p['degree1'] || p['degree2']
p.degrees = {}
p.degrees["first"] = p['degree1'] == "Other" ? p['degree1_other'] : p['degree1']
p.degrees["second"] = p['degree2'] == "Other" ? p['degree2_other'] : p['degree2']
p.save
end
end
end
问题是 mongo 和 ruby 分别占用 80% 和 20% CPU 的速度非常慢。
对于更简单的迁移,我可以像这样使用 mongo 更新:
db.people.update({},{$rename : {"url" : "website"}}, false, true)
这运行得非常快。有什么方法可以将上述 rake 任务翻译成 mongo 更新或 shell 脚本?
【问题讨论】:
-
如果您想用 Ruby 编写并轻松将其移植到 js mongo,请从调试器中获取 mongo 命令(如果您设置为调试级别)。
标签: ruby-on-rails ruby mongodb mongoid