Oba jsou skvělé knihovny MongoDB pro Ruby. Ale pokud chcete přepnout, zde je několik poznámek:
Migrace MongoMapper ORM na Mongoid ORM – Poznámky
-
Nakonfigurujte připojení k databázi.
-
Nahradit konfigurační soubor yaml (zahrnuje konfiguraci repliky).
-
Nakonfigurujte specifické možnosti Mongoidu. např. -
raise_not_found_error: false. pokud nechcete, aby se při každém dotazu nic nevrátilo... -
Změnit definice všech modelů -
include MongoMapper::Documentinclude Mongoid::Document -
Změňte formát pro všechny definice polí.
-
V mongoidu byste měli zadat časové razítko:
include Mongoid::Timestamps -
Ověření změny. např.:
:in => ARRAY, bude:validates :name, presence: true, inclusion: { in: ARRAY } -
Změňte indexy.
-
Změňte formát order_by. např.:MM:
Model.all(:order => 'name'). Mongoid:Model.order_by('name ASC') -
Errorje klíčové slovo v Mongoidu. Pokud tedy máte model s názvemError, měli byste to změnit. -
Formát stránkování je jiný, používá jiný drahokam.
-
Položka indexu primárního klíče v MM je
id. V Mongoidu je to_id, pokud máte jiný kód spoléhající na.idv objektu JSON můžete přepsat as_json ve vašem modelu vytvořte požadovanou strukturu JSON. -
V MM
Model.fields(:id, :name),omezuje pole vrácená z databáze na pole dodaná do metody. V Mongoidu je toModel.only(:name,:id) -
Některé změny dotazů:
-
Výběr objektů podle pole:MM:
Model.where(:attr.in => [ ] )aModel.where(:attr => [ ] ). Mongoid je pouze:Model.where(:attr.in => [ ] ) -
Možnost mapy MM je ekvivalentní k vytržení středu.
Model.map(&:name)--to--Model.pluck(:name) -
Mongoid nepodporuje vyhledávací dotaz pro nulu. např.:
value = nil. Model.find(value)vyvolá chybu:"Calling Document .find with nil is invalid". Takže v mongoidu bychom měli udělat:Model.find(value || ""). -
V MM:
Model.find_or_initialize_by_name("BOB"). V MongoiduModel.find_or_initialize_by(name: "BOB"). -
MM lze použít v těchto dvou možnostech:
Model.where({:name => 'BOB'}).firsta takéModel.first({:name => 'BOB'}). Mongoid má pouze první možnost. -
V MM pro aktualizaci více objektů:
Model.set({conditions},attr_to_update). V Mongoidu:Model.where(conditions).update_all(attr_to_update).
-