我目前正在使用一个Rails应用程序,我们在后端使用mongoid/mongoDB。我知道我不需要像迁移那样的ActiveRecord来迁移模式,但是当我更改mongoid模型定义时,我确实需要迁移数据。是否有其他人跑到相同的情况下,如果是的话,你如何处理它?Rails/Mongoid数据库迁移
回答
编写自定义rake任务将数据迁移需要
谢谢。我曾想到这一点,但我需要这个运行一次。 – 2012-03-27 16:43:17
我不关注。您可以轻松地运行一次或多次耙子任务。运行一次,然后删除任务。 – cpjolicoeur 2012-03-27 17:21:23
所以我希望它运行一次,然后有一些它运行的记录,所以只要该记录停留在数据库中,它就永远不会再运行。但是,我并没有想到只要运行代码就会将其删除。 – 2012-03-27 17:40:18
这个问题解决了一个mongoid设置创建自定义的迁移同样的问题。
我有一些最近的情况,在那里我必须做一些数据迁移一次(基本更新脏数据); 因此,我在/ db/migrate /中执行了mongoid迁移,并覆盖了db:migrate任务,以便它在该应用程序本身的mongo数据库中创建一个集合,称为“迁移”,记录被激发的迁移那么所有迁移都不会再次运行,并且您可以继续添加具有某种层次结构的迁移(如果迁移是相互依赖的话)。
即使您没有进行架构更改,也可能需要在字段之间移动数据,或者删除代码库中不再使用的字段。在部署新代码时可以运行迁移,这很好。我建议使用名为mongoid_rails_migrations
的宝石。这为您提供了像您习惯的迁移生成器,并为迁移数据提供了一些组织。
class MyMigration < Mongoid::Migration
def self.up
MyModel.all.each do |model|
# label was renamed to name
model.set :name, model[:label] # copy the data from the old field to the new one
model.remove_attribute :label # remove the old field from the document
model.save!
end
end
end
只需一个小时,在做这个的方式是'MyModel.all.rename(label::name)'。这会执行原子$重命名,并且会比手动逐步执行和保存更好的性能。 +1 for'mongoid_rails_migrations' :) – Jay 2015-05-20 00:53:32
- 1. 数据库迁移
- 2. 数据库迁移
- 3. 数据库迁移
- 4. 数据库迁移
- 5. 数据库迁移问题
- 6. MySQL UTF8数据库迁移
- 7. Django数据库迁移
- 8. Openvswitch(ovsdb)数据库迁移
- 9. 在轨数据库迁移
- 10. 多个数据库 - 迁移
- 11. 数据库迁移MembershipReboot
- 12. 数据库迁移notnull()?
- 13. 数据库迁移失败
- 14. Yii数据库迁移
- 15. Orbeon数据库迁移
- 16. 。迁移整个数据库
- 17. BO Universe数据库迁移
- 18. MySQL数据库迁移缺少数据
- 19. 数据迁移到SQLSERVER数据库
- 20. Django - 数据迁移+数据库转储
- 21. 迁移数据
- 22. 数据迁移
- 23. 迁移数据
- 24. 核心数据:数据库迁移导致重复数据库
- 25. 使用EnterpriseDB迁移工具将MySQL数据库迁移到PostgreSQL
- 26. 迁移不被放置在“数据库\迁移”文件夹
- 27. (mysql)数据库迁移难度从digikam 4. *迁移到5. *
- 28. 在数据库导入后迁移标记迁移
- 29. 迁移到现有的数据库中没有匹配迁移
- 30. 迁移网站 - 在迁移期间保持数据库同步
https://github.com/adacosta/mongoid_rails_migrations – rubish 2012-03-27 20:03:14