我目前正在使用一個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. Openvswitch(ovsdb)數據庫遷移
- 7. grails 3數據庫遷移
- 8. 遷移SQL數據庫
- 9. 在軌數據庫遷移
- 10. 數據庫遷移失敗
- 11. CakePHP遷移數據庫行
- 12. Mysql大數據庫遷移
- 13. Rails數據庫遷移
- 14. 數據庫遷移MembershipReboot
- 15. 數據庫遷移問題
- 16. 。遷移整個數據庫
- 17. Django數據庫遷移
- 18. Yii數據庫遷移
- 19. MySQL UTF8數據庫遷移
- 20. BO Universe數據庫遷移
- 21. Python SQLAlchemy數據庫遷移
- 22. 數據庫遷移notnull()?
- 23. 多個數據庫 - 遷移
- 24. Orbeon數據庫遷移
- 25. WordPress的數據庫遷移
- 26. Grails數據庫遷移加載數據
- 27. Django - 數據遷移+數據庫轉儲
- 28. MySQL數據庫遷移缺少數據
- 29. 數據遷移到SQLSERVER數據庫
- 30. 遷移數據
https://github.com/adacosta/mongoid_rails_migrations – rubish 2012-03-27 20:03:14