Ambos son excelentes bibliotecas MongoDB para Ruby. Pero si desea cambiar, aquí hay algunas notas:
Migración de MongoMapper ORM a Mongoid ORM - Notas
-
Configure la conexión de la base de datos.
-
Reemplace el archivo de configuración yaml (incluye configuración de réplica).
-
Configure las opciones específicas de Mongoid. por ejemplo,
raise_not_found_error: false. si no quiere un error cada vez que una consulta no arroja nada... -
Cambiar todas las definiciones de modelos -
include MongoMapper::Documentparainclude Mongoid::Document -
Cambie el formato para todas las definiciones de campos.
-
En mongoid, debe especificar la marca de tiempo:
include Mongoid::Timestamps -
Validación de cambios. por ejemplo:
:in => ARRAY, será:validates :name, presence: true, inclusion: { in: ARRAY } -
Cambiar índices.
-
Cambiar el formato order_by. por ejemplo:MM:
Model.all(:order => 'name'). Mongoide:Model.order_by('name ASC') -
Errores una palabra clave en Mongoid. Entonces, si tiene un modelo llamadoError, deberías cambiarlo. -
El formato de paginación es diferente, usando otra gema.
-
La entrada de índice de clave principal en MM es
id. En Mongoid es_id, si tiene otro código que se base en.iden el objeto JSON, puede anular as_json función en su Modelo para crear la estructura JSON que desea. -
En MM,
Model.fields(:id, :name), limita los campos devueltos por la base de datos a los proporcionados al método. En Mongoid esModel.only(:name,:id) -
Cambios en algunas consultas:
-
Selección de objetos por matriz:MM:
Model.where(:attr.in => [ ] )yModel.where(:attr => [ ] ). Mongoid es solo:Model.where(:attr.in => [ ] ) -
La opción de mapa de MM es equivalente al arranque de Mid.
Model.map(&:name)--a--Model.pluck(:name) -
Mongoid no admite consultas de búsqueda para nil. por ejemplo:
value = nil. Model.find(value)arrojará un error:"Calling Document .find with nil is invalid". Así que en mongoid deberíamos hacer:Model.find(value || ""). -
En MM:
Model.find_or_initialize_by_name("BOB"). En MongoidModel.find_or_initialize_by(name: "BOB"). -
MM se puede usar en esas dos opciones:
Model.where({:name => 'BOB'}).first, y tambiénModel.first({:name => 'BOB'}). Mongoid solo tiene la primera opción. -
En MM, para actualizar múltiples objetos:
Model.set({conditions},attr_to_update). En Mongoid:Model.where(conditions).update_all(attr_to_update).
-