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::Document
untukinclude 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')
-
Error
adalah 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.id
di 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)
.
-