Beiden zijn geweldige MongoDB-bibliotheken voor Ruby. Maar als u wilt overschakelen, volgen hier enkele opmerkingen:
MongoMapper ORM migreren naar Mongoid ORM - Notes
-
Configureer de databaseverbinding.
-
Vervang configuratie yaml-bestand (inclusief replicaconfiguratie).
-
Configureer Mongoid-specifieke opties. bijv. -
raise_not_found_error: false. als je niet elke keer een foutmelding wilt als een zoekopdracht niets oplevert... -
Wijzig alle modeldefinities -
include MongoMapper::Documentominclude Mongoid::Document -
Wijzig het formaat voor alle velddefinities.
-
In mongoid moet je het tijdstempel specificeren:
include Mongoid::Timestamps -
Validatie wijzigen. bijv.:
:in => ARRAY, zal zijn:validates :name, presence: true, inclusion: { in: ARRAY } -
Indexen wijzigen.
-
Wijzig de indeling order_by. bijv.:MM:
Model.all(:order => 'name'). Mongoïde:Model.order_by('name ASC') -
Erroris een sleutelwoord in Mongoid. Dus als je een model hebt met de naamError, moet je het veranderen. -
De pagineringsindeling is anders, met een ander juweeltje.
-
De primaire sleutelindexvermelding in MM is
id. In Mongoid is het_id, als je andere code hebt die vertrouwt op.idin de object-JSON kunt u as_json functie in uw model om de gewenste JSON-structuur te creëren. -
In MM,
Model.fields(:id, :name), beperkt de velden die uit de database worden geretourneerd tot de velden die aan de methode worden geleverd. In Mongoid is hetModel.only(:name,:id) -
Enkele wijzigingen in zoekopdrachten:
-
Objecten selecteren op array:MM:
Model.where(:attr.in => [ ] )enModel.where(:attr => [ ] ). Mongoid is alleen:Model.where(:attr.in => [ ] ) -
De kaartoptie van MM is gelijk aan de pluk van de Mid.
Model.map(&:name)--to--Model.pluck(:name) -
Mongoid ondersteunt geen zoekopdracht voor nul. bijv.:
value = nil. Model.find(value)zal een foutmelding geven:"Calling Document .find with nil is invalid". Dus in mongoid zouden we moeten doen:Model.find(value || ""). -
In MM:
Model.find_or_initialize_by_name("BOB"). In MongoidModel.find_or_initialize_by(name: "BOB"). -
MM kan in die twee opties worden gebruikt:
Model.where({:name => 'BOB'}).first, en ookModel.first({:name => 'BOB'}). Mongoid heeft alleen de eerste optie. -
In MM, om meerdere objecten bij te werken:
Model.set({conditions},attr_to_update). In Mongoid:Model.where(conditions).update_all(attr_to_update).
-