MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Saran tentang migrasi dari MongoMapper ke Mongoid?

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 untuk include 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 bernama Error , 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 itu Model.only(:name,:id)

  • Beberapa perubahan kueri:

    1. Memilih objek menurut larik:MM:Model.where(:attr.in => [ ] ) dan Model.where(:attr => [ ] ) . Mongoid hanya:Model.where(:attr.in => [ ] )

    2. Opsi peta MM setara dengan petik Mid. Model.map(&:name) --to-- Model.pluck(:name)

    3. 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 || "") .

    4. Dalam MM:Model.find_or_initialize_by_name("BOB") . Di Mongoid Model.find_or_initialize_by(name: "BOB") .

    5. MM dapat digunakan dalam dua opsi tersebut:Model.where({:name => 'BOB'}).first , dan juga Model.first({:name => 'BOB'}) . Mongoid hanya memiliki opsi pertama.

    6. Dalam MM, untuk memperbarui beberapa objek:Model.set({conditions},attr_to_update) . Di Mongoid:Model.where(conditions).update_all(attr_to_update) .




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Nilai unik luwak dalam array objek bersarang

  2. Luwak findOneAndUpdate dan upsert tidak mengembalikan kesalahan, tidak ada dokumen yang terpengaruh

  3. Bidang Nomor MongoDB tidak akan dimasukkan atau diperbarui dengan nomor yang saya masukkan

  4. PyMongo dan Multiprocessing:ServerSelectionTimeoutError

  5. Status Set Replika MonogoDB Tidak berubah dari Startup ke Sekunder