Entrambe sono ottime librerie MongoDB per Ruby. Ma se vuoi cambiare, ecco alcune note:
Migrazione di MongoMapper ORM a Mongoid ORM - Note
-
Configura la connessione al database.
-
Sostituisci il file yaml di configurazione (include la configurazione della replica).
-
Configura le opzioni specifiche di Mongoid. ad esempio -
raise_not_found_error: false. se non vuoi un errore ogni volta che una query non restituisce nulla... -
Modifica le definizioni di tutti i modelli -
include MongoMapper::Documentperinclude Mongoid::Document -
Modifica il formato per tutte le definizioni dei campi.
-
In mongoid, dovresti specificare il timestamp:
include Mongoid::Timestamps -
Convalida del cambiamento. es:
:in => ARRAY, sarà:validates :name, presence: true, inclusion: { in: ARRAY } -
Cambia indici.
-
Modifica il formato order_by. es:MM:
Model.all(:order => 'name'). Mongoid:Model.order_by('name ASC') -
Errorè una parola chiave in mongoide. Quindi, se hai un modello chiamatoError, dovresti cambiarlo. -
Il formato di impaginazione è diverso, utilizzando un'altra gemma.
-
La voce dell'indice della chiave primaria in MM è
id. In Mongoid è_id, se hai altro codice che si basa su.idnell'oggetto JSON, puoi sovrascrivere as_json funzione nel tuo modello per creare la struttura JSON che desideri. -
In MM,
Model.fields(:id, :name),limita i campi restituiti dal database a quelli forniti al metodo. In Mongoid èModel.only(:name,:id) -
Alcune modifiche alle query:
-
Selezione di oggetti per array:MM:
Model.where(:attr.in => [ ] )eModel.where(:attr => [ ] ). Mongoid è solo:Model.where(:attr.in => [ ] ) -
L'opzione della mappa di MM è equivalente al coraggio del Mid.
Model.map(&:name)--to--Model.pluck(:name) -
Mongoid non supporta la query di ricerca per nil. es:
value = nil. Model.find(value)genererà un errore:"Calling Document .find with nil is invalid". Quindi in mongoid dovremmo fare:Model.find(value || ""). -
In MM:
Model.find_or_initialize_by_name("BOB"). In MongoidModel.find_or_initialize_by(name: "BOB"). -
MM può essere utilizzato in queste due opzioni:
Model.where({:name => 'BOB'}).firste ancheModel.first({:name => 'BOB'}). Mongoid ha solo la prima opzione. -
In MM, per aggiornare più oggetti:
Model.set({conditions},attr_to_update). In Mongoid:Model.where(conditions).update_all(attr_to_update).
-