Båda är fantastiska MongoDB-bibliotek för Ruby. Men om du vill byta, här är några anteckningar:
Migrera MongoMapper ORM till Mongoid ORM - Notes
-
Konfigurera databasanslutningen.
-
Ersätt yaml-konfigurationsfil (inkluderar replikkonfiguration).
-
Konfigurera Mongoid-specifika alternativ. t.ex. -
raise_not_found_error: false. om du inte vill ha ett fel varje gång en fråga inte returnerar något... -
Ändra alla modellers definitioner -
include MongoMapper::Documentattinclude Mongoid::Document -
Ändra formatet för alla fältdefinitioner.
-
I mongoid bör du ange tidsstämpeln:
include Mongoid::Timestamps -
Ändra validering. t.ex.:
:in => ARRAY, kommer att vara:validates :name, presence: true, inclusion: { in: ARRAY } -
Ändra index.
-
Ändra order_by format. t.ex.:MM:
Model.all(:order => 'name'). Mongoid:Model.order_by('name ASC') -
Errorär ett nyckelord i Mongoid. Så om du har en modell som heterError, bör du ändra det. -
Pagineringsformatet är annorlunda, med en annan pärla.
-
Den primära nyckelindexposten i MM är
id. I Mongoid är det_id, om du har annan kod som bygger på.idi objektet JSON kan du åsidosätta as_json a> funktion i din modell för att skapa den JSON-struktur du vill ha. -
I MM,
Model.fields(:id, :name),begränsar fälten som returneras från databasen till de som tillhandahålls till metoden. I Mongoid är detModel.only(:name,:id) -
Vissa frågor ändras:
-
Välja objekt efter array:MM:
Model.where(:attr.in => [ ] )ochModel.where(:attr => [ ] ). Mongoid är endast:Model.where(:attr.in => [ ] ) -
Kartalternativet MM motsvarar mittens plockning.
Model.map(&:name)--to--Model.pluck(:name) -
Mongoid stöder inte sökfråga för noll. t.ex.:
value = nil. Model.find(value)kommer att ge ett felmeddelande:"Calling Document .find with nil is invalid". Så i mongoid bör vi göra:Model.find(value || ""). -
I MM:
Model.find_or_initialize_by_name("BOB"). I MongoidModel.find_or_initialize_by(name: "BOB"). -
MM kan användas i dessa två alternativ:
Model.where({:name => 'BOB'}).first, och ävenModel.first({:name => 'BOB'}). Mongoid har bara första alternativet. -
I MM, för att uppdatera flera objekt:
Model.set({conditions},attr_to_update). I Mongoid:Model.where(conditions).update_all(attr_to_update).
-