MongoDB'yi arka uç olarak ve ORM aracı olarak MongoMapper kullanarak bir Rails uygulaması yapıyorum.MongoMapper ve geçişler
class SomeModel
include MongoMapper::Document
key :some_key, String
end
Daha sonra 2. sürümünde, ben modeline yeni bir gerekli anahtara ihtiyacınız olduğunu fark: sürüm 1'de varsayalım, ben şu modeli tanımlar. Yani, 2. sürümünde, SomeModel şimdi şöyle görünür:
class SomeModel
include MongoMapper::Document
key :some_key, String
key :some_new_key, String, :required => true
end
nasıl some_new_key içerecek şekilde tüm mevcut verileri taşı? Mevcut tüm belgeler için makul bir varsayılan değerin nasıl ayarlanacağını biliyorum. Bunu bir adım daha ileri götürerek, 3. sürümde, gerçekten bir tuşa ihtiyacım olmadığını anlıyorum. Yani, şimdi modeli benim veritabanında mevcut tüm kayıtlar some_key için belirlenen değerlere sahip bu
class SomeModel
include MongoMapper::Document
key :some_new_key, String, :required => true
end
Ama benziyor ve sadece bu noktada uzay harcıyorsun. O alanı nasıl geri alabilirim?
ActiveRecord ile, bazı_new_key öğelerinin (sürüm1 -> sürüm2 geçişinde) başlangıç değerlerini eklemek ve bazı_key (sürüm2 -> sürüm3 geçişinde) değerlerini silmek için yeni geçişler oluşturdum.
MongoDB/MongoMapper ile bunun için uygun yol nedir? Bana öyle görünüyor ki, hangi geçişlerin yürütüldüğü bazı izleme yöntemleri hala gerekli. Böyle bir şey var mı? EDIT: Bence insanlar benim sorumu kaçırıyorlar diye düşünüyorum. Verileri değiştirmek veya yeniden yapılandırmak için bir veritabanında bir komut dosyası çalıştırabilmek istediğiniz zamanlar vardır. Yukarıdaki iki örnek verdim, yeni bir anahtarın eklendiği ve bir anahtarın kaldırılabildiği ve alanın geri alınabileceği bir örnek verdim. Bu komut dosyalarını çalıştırmayı nasıl yönetiyorsunuz? ActiveRecord geçişleri, bu komut dosyalarını çalıştırmanın ve hangi komut dosyalarının daha önce çalıştırıldığını ve hangi komut dosyalarının çalıştırılmadığını belirlemek için kolay bir yol sağlar. Açıkçası, veritabanında herhangi bir güncelleme yapan bir Mongo betiği yazabilirim ama aradığım şey, hangi yükseltme komut dosyalarının zaten çalıştırıldığını izlememe izin veren geçişler gibi bir çerçevedir.
Bence Mongo (/ Mapper) bu tür şeyler için çok genç olabilir. :/ – Konklone
Mongo DB'nin aslında herhangi bir şeması olmadığı için, şema açısından geçiş aslında Mongo DB'de uygun bir kavram değildir. Veri taşıma komut dosyasını kendiniz yazmanız gerekiyor. – zsong