Les deux sont d'excellentes bibliothèques MongoDB pour Ruby. Mais si vous voulez changer, voici quelques remarques :
Migration de MongoMapper ORM vers Mongoid ORM - Remarques
-
Configurez la connexion à la base de données.
-
Remplacez le fichier yaml de configuration (inclut la configuration du réplica).
-
Configurez les options spécifiques à Mongoid. par exemple -
raise_not_found_error: false
. si vous ne voulez pas d'erreur à chaque fois qu'une requête ne retourne rien... -
Modifiez toutes les définitions de modèles -
include MongoMapper::Document
pourinclude Mongoid::Document
-
Modifiez le format de toutes les définitions de champs.
-
Dans mongoid, vous devez spécifier l'horodatage :
include Mongoid::Timestamps
-
Validation du changement. ex :
:in => ARRAY
, sera :validates :name, presence: true, inclusion: { in: ARRAY }
-
Modifier les index.
-
Modifier le format order_by. par exemple :MM :
Model.all(:order => 'name')
. Mongoid :Model.order_by('name ASC')
-
Error
est un mot-clé en Mongoid. Donc, si vous avez un modèle nomméError
, vous devriez le changer. -
Le format de pagination est différent, en utilisant une autre gemme.
-
L'entrée d'index de clé primaire dans MM est
id
. Dans Mongoid c'est_id
, si vous avez un autre code reposant sur.id
dans l'objet JSON, vous pouvez remplacer as_json fonction dans votre modèle pour créer la structure JSON souhaitée. -
Dans MM,
Model.fields(:id, :name)
, limite les champs renvoyés par la base de données à ceux fournis à la méthode. Dans Mongoid c'estModel.only(:name,:id)
-
Certaines requêtes changent :
-
Sélection d'objets par tableau :MM :
Model.where(:attr.in => [ ] )
etModel.where(:attr => [ ] )
. Mongoid est uniquement :Model.where(:attr.in => [ ] )
-
L'option de carte de MM équivaut au courage du Mid.
Model.map(&:name)
--to--Model.pluck(:name)
-
Mongoid ne prend pas en charge la recherche de requête pour nil. ex :
value = nil. Model.find(value)
renverra une erreur :"Calling Document .find with nil is invalid"
. Donc en mongoid nous devrions faire :Model.find(value || "")
. -
Dans MM :
Model.find_or_initialize_by_name("BOB")
. Dans MongoidModel.find_or_initialize_by(name: "BOB")
. -
MM peut être utilisé dans ces deux options :
Model.where({:name => 'BOB'}).first
, et aussiModel.first({:name => 'BOB'})
. Mongoid n'a que la première option. -
Dans MM, pour mettre à jour plusieurs objets :
Model.set({conditions},attr_to_update)
. Dans Mongoid :Model.where(conditions).update_all(attr_to_update)
.
-