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::Document
attinclude 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å.id
i 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)
.
-