Keduanya adalah Perpustakaan MongoDB yang bagus untuk Ruby. Tetapi jika Anda ingin beralih, berikut beberapa catatannya:
Memigrasikan MongoMapper ORM ke Mongoid ORM - Catatan
-
Konfigurasikan koneksi database.
-
Ganti file yaml konfigurasi (termasuk konfigurasi replika).
-
Konfigurasikan opsi spesifik Mongoid. mis -
raise_not_found_error: false. jika Anda tidak menginginkan kesalahan setiap kali kueri tidak menghasilkan apa-apa... -
Ubah semua definisi model -
include MongoMapper::Documentuntukinclude Mongoid::Document -
Ubah format untuk semua definisi bidang.
-
Di mongoid, Anda harus menentukan cap waktu:
include Mongoid::Timestamps -
Ubah validasi. misalnya:
:in => ARRAY, akan menjadi:validates :name, presence: true, inclusion: { in: ARRAY } -
Ubah indeks.
-
Ubah format order_by. misalnya:MM:
Model.all(:order => 'name'). Mongoid:Model.order_by('name ASC') -
Erroradalah kata kunci di Mongoid. Jadi jika Anda memiliki model bernamaError, Anda harus mengubahnya. -
Format pagination berbeda, menggunakan permata lain.
-
Entri indeks kunci utama dalam MM adalah
id. Di Mongoid itu_id, jika Anda memiliki kode lain mengandalkan.iddi objek JSON, Anda dapat mengganti as_json fungsi dalam Model Anda untuk membuat struktur JSON yang Anda inginkan. -
Dalam MM,
Model.fields(:id, :name), membatasi bidang yang dikembalikan dari database ke bidang yang disediakan ke metode. Di Mongoid ituModel.only(:name,:id) -
Beberapa perubahan kueri:
-
Memilih objek menurut larik:MM:
Model.where(:attr.in => [ ] )danModel.where(:attr => [ ] ). Mongoid hanya:Model.where(:attr.in => [ ] ) -
Opsi peta MM setara dengan petik Mid.
Model.map(&:name)--to--Model.pluck(:name) -
Mongoid tidak mendukung pencarian pencarian untuk nil. misalnya:
value = nil. Model.find(value)akan menimbulkan kesalahan:"Calling Document .find with nil is invalid". Jadi di mongoid kita harus melakukan:Model.find(value || ""). -
Dalam MM:
Model.find_or_initialize_by_name("BOB"). Di MongoidModel.find_or_initialize_by(name: "BOB"). -
MM dapat digunakan dalam dua opsi tersebut:
Model.where({:name => 'BOB'}).first, dan jugaModel.first({:name => 'BOB'}). Mongoid hanya memiliki opsi pertama. -
Dalam MM, untuk memperbarui beberapa objek:
Model.set({conditions},attr_to_update). Di Mongoid:Model.where(conditions).update_all(attr_to_update).
-