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::Documentatinclude 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') -
Errorer 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.idi 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).
-