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::Document
perinclude 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.id
nell'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'}).first
e 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)
.
-