И двете са страхотни 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)
.
-