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::Documentpourinclude 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') -
Errorest 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.iddans 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).
-