Ich arbeite derzeit an einer Rails-App, wo wir Mongoid/MongoDB auf dem Back-End verwenden. Ich verstehe, dass ich ActiveRecord wie Migration nicht benötige, um das Schema zu migrieren, aber ich muss Daten migrieren, während ich Mongoidmodelldefinitionen ändere. Gibt es noch jemanden, der in dasselbe Szenario hineinrennt? Wenn ja, wie gehst du damit um?Schienen/Mongoid Datenbankmigrationen
Antwort
Schreiben Sie einen benutzerdefinierten Rake Aufgabe, die Daten als
Dank. Ich hatte darüber nachgedacht, aber ich muss das einmal laufen lassen. –
Ich folge nicht. Sie können eine Rake-Aufgabe einfach so oft ausführen, wie Sie möchten. Führen Sie es einmal aus und löschen Sie dann die Aufgabe. – cpjolicoeur
Also ich möchte es einmal ausgeführt werden und dann eine Art von Datensatz, dass es ausgeführt wurde, so dass es nie wieder ausgeführt wird, solange dieser Datensatz in der Datenbank bleibt. Allerdings habe ich nicht daran gedacht, den Code einfach zu entfernen, nachdem er ausgeführt wurde. –
Diese Frage befasst sich mit dem gleichen Thema Erstellen von benutzerdefinierten Migrationen in einem mongoid Setup benötigt zu migrieren.
Ich hatte das einig Szenario vor kurzem, wo ich nur einmal eine Datenmigration zu tun habe (im Grunde schmutzige Daten aktualisieren); Also, was ich hatte eine Mongoid-Migrationen in/db/migrate/und überschreiben die db: migrieren Aufgabe, so dass es erstellt eine Sammlung in Mongo Db dieser App selbst, sagen "Migrationen", die die Migration, die gefeuert hat, mit aufzeichnen Dies bedeutet, dass keine Migration erneut ausgeführt wird und Sie können weiterhin Migrationen mit einer Hierarchie hinzufügen (falls die Migration voneinander abhängig ist).
Obwohl Sie keine Schemaänderungen vornehmen, müssen Sie möglicherweise Daten zwischen Feldern verschieben oder Felder entfernen, die nicht mehr in der Codebasis verwendet werden. Es ist schön, Migrationen zu haben, die Sie ausführen können, wenn Sie neuen Code bereitstellen. Ich empfehle ein Juwel namens mongoid_rails_migrations
. Dies bietet Ihnen Migrationsgeneratoren, wie Sie es gewohnt sind, und bietet eine Organisation für die Migration von Daten.
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
Nur ein Kopf, ein gebaut In diesem Fall ist 'MyModel.all.rename (label:: name)'. Dies führt eine atomare $ Umbenennung durch und bietet Ihnen eine weitaus bessere Leistung als das manuelle Durchlaufen und Speichern. +1 für 'mongoid_rails_migrations' :) – Jay
- 1. Datenbankmigrationen für SQL Server
- 2. Asp.net-Kerncode erste Datenbankmigrationen
- 3. Phalcon Dev Tools - Datenbankmigrationen
- 4. Laravel ohne Eloquent & Datenbankmigrationen?
- 5. Datenbankmigrationen und -ansichten
- 6. Datenbankmigrationen für Entity Framework 4
- 7. Datenbankmigrationen bei der Django-Produktion
- 8. Wie kann ich Datenbankmigrationen testen?
- 9. Welche Vorteile bietet Liquibase für Datenbankmigrationen?
- 10. Zurücksetzen von Datenbankmigrationen mit EF-Code zuerst?
- 11. Datenbankmigrationen in Sails.js für alle Modelle deaktivieren
- 12. Welches Paket für Datenbankmigrationen in Go?
- 13. Phinx - Datenbankmigrationen für PHP-App - PostgreSQL-Schema funktioniert nicht
- 14. Wie behandelt sails.js Datenbankmigrationen beim Arbeiten mit einer Schemadatenbank?
- 15. Umgang mit Datenbankmigrationen bei Verwendung von Entity Framework
- 16. Wie können Sie aufeinander folgende Datenbankmigrationen in django 1.9+ zusammenführen?
- 17. Datenbankmigrationen mit Entity Framework Core beim Start der Anwendung ausführen
- 18. Erstellen von Datenbankmigrationen in Ruby on Rails ohne Verwendung von Gerüst
- 19. Datenbankmigrationen: Verwalten mit Build-Skript oder automatisch beim Start der App?
- 20. Wie führen Sie Django-Datenbankmigrationen bei Verwendung von Docker-Compose durch?
- 21. Was soll ich tun, während ich darauf warte, dass der Build/die Tests/die Datenbankmigrationen ausgeführt werden?
- 22. Wie kann ich Migrationen schreiben, um Datensätze mit phinx einzufügen?
- 23. Wie man Spalte mit FluentMigrator fallen lässt?
- 24. Irreversible Migrationen in Alembic
- 25. Warum liquibase databasechangelog keinen Primärschlüssel hat?
- 26. ASP.NET MVC 4, Migrationen - So führen Sie 'update-database' auf einem Produktionsserver aus
- 27. Wie überprüft man, ob ein Trigger in PostgreSQL existiert?
- 28. neue benutzerdefinierte Berechtigungen in Django
- 29. Kurzer Weg, um viele Beans zu machen, hängt von einer Bean ab
- 30. Wo werden Edelsteine benötigt?
https://github.com/adacosta/mongoid_rails_migrations – rubish