Begge af dem er fantastiske MongoDB-biblioteker til Ruby. Men hvis du vil skifte, er her nogle bemærkninger:
Migrering af MongoMapper ORM til Mongoid ORM - Noter
-
Konfigurer databaseforbindelsen.
-
Erstat yaml-konfigurationsfil (inkluderer replikakonfiguration).
-
Konfigurer Mongoid-specifikke muligheder. f.eks. -
raise_not_found_error: false
. hvis du ikke vil have en fejl hver gang en forespørgsel ikke returnerer noget... -
Skift alle modeldefinitioner -
include MongoMapper::Document
atinclude Mongoid::Document
-
Skift formatet for alle feltdefinitioner.
-
I mongoid skal du angive tidsstemplet:
include Mongoid::Timestamps
-
Skift validering. f.eks.:
:in => ARRAY
, vil være:validates :name, presence: true, inclusion: { in: ARRAY }
-
Skift indekser.
-
Skift ordre_efter format. f.eks.:MM:
Model.all(:order => 'name')
. Mongoid:Model.order_by('name ASC')
-
Error
er et nøgleord i Mongoid. Så hvis du har en model ved navnError
, bør du ændre det. -
Sideinddelingsformatet er anderledes ved at bruge en anden perle.
-
Den primære nøgleindeksindgang i MM er
id
. I Mongoid er det_id
, hvis du har anden kode, der er afhængig af.id
i objektet JSON kan du tilsidesætte as_json a> funktion i din model for at skabe den JSON-struktur, du ønsker. -
I MM,
Model.fields(:id, :name)
, begrænser de felter, der returneres fra databasen, til dem, der leveres til metoden. I Mongoid er detModel.only(:name,:id)
-
Nogle forespørgsler ændres:
-
Valg af objekter efter matrix:MM:
Model.where(:attr.in => [ ] )
ogModel.where(:attr => [ ] )
. Mongoid er kun:Model.where(:attr.in => [ ] )
-
Kortmulighed for MM svarer til Mid's pluk.
Model.map(&:name)
--to--Model.pluck(:name)
-
Mongoid understøtter ikke find-forespørgsel til nul. f.eks.:
value = nil. Model.find(value)
vil give en fejl :"Calling Document .find with nil is invalid"
. Så i mongoid bør vi gøre:Model.find(value || "")
. -
I MM:
Model.find_or_initialize_by_name("BOB")
. I MongoidModel.find_or_initialize_by(name: "BOB")
. -
MM kan bruges i disse to muligheder:
Model.where({:name => 'BOB'}).first
, og ogsåModel.first({:name => 'BOB'})
. Mongoid har kun den første mulighed. -
I MM, for at opdatere flere objekter:
Model.set({conditions},attr_to_update)
. I Mongoid:Model.where(conditions).update_all(attr_to_update)
.
-