И двете са страхотни MongoDB библиотеки за Ruby. Но ако искате да превключите, ето някои бележки:
Миграция на MongoMapper ORM към Mongoid ORM – Бележки
-
Конфигурирайте връзката с базата данни.
-
Заменете конфигурационния yaml файл (включва конфигурация на реплика).
-
Конфигурирайте специфични за Mongoid опции. напр. -
raise_not_found_error: false. ако не искате грешка всеки път, когато заявка не върне нищо... -
Променете всички дефиниции на модели -
include MongoMapper::Documentзаinclude Mongoid::Document -
Променете формата за всички дефиниции на полета.
-
В mongoid трябва да посочите клеймото за време:
include Mongoid::Timestamps -
Промяна на валидирането. напр.:
:in => ARRAY, ще бъде:validates :name, presence: true, inclusion: { in: ARRAY } -
Промяна на индексите.
-
Промяна на формата order_by. напр.:MM:
Model.all(:order => 'name'). Mongoid:Model.order_by('name ASC') -
Errorе ключова дума в Mongoid. Така че, ако имате модел с имеError, трябва да го промените. -
Форматът на пагинация е различен, използвайки друг скъпоценен камък.
-
Записът на индекса на първичния ключ в MM е
id. В Mongoid това е_id, ако имате друг код, разчитащ на.idв обекта JSON можете да замените as_json функция във вашия модел, за да създадете JSON структурата, която желаете. -
В MM,
Model.fields(:id, :name),ограничава полетата, върнати от базата данни, до тези, предоставени на метода. В Mongoid това еModel.only(:name,:id) -
Някои промени в заявките:
-
Избиране на обекти по масив:MM:
Model.where(:attr.in => [ ] )иModel.where(:attr => [ ] ). Mongoid е само:Model.where(:attr.in => [ ] ) -
Опцията за карта на MM е еквивалентна на изтръгването на Mid.
Model.map(&:name)--to--Model.pluck(:name) -
Mongoid не поддържа заявка за намиране за нула. напр.:
value = nil. Model.find(value)ще изведе грешка:"Calling Document .find with nil is invalid". Така че в mongoid трябва да направим:Model.find(value || ""). -
В MM:
Model.find_or_initialize_by_name("BOB"). В MongoidModel.find_or_initialize_by(name: "BOB"). -
MM може да се използва в тези две опции:
Model.where({:name => 'BOB'}).first, а също иModel.first({:name => 'BOB'}). Mongoid има само първата опция. -
В MM, за актуализиране на множество обекти:
Model.set({conditions},attr_to_update). В Mongoid:Model.where(conditions).update_all(attr_to_update).
-