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

Toko mongoid_in menghasilkan hasil acak

Butuh beberapa saat tetapi saya menemukan jawabannya. Saya memutuskan untuk mempostingnya, berharap ini akan membantu orang lain.

Mongoid mengimplementasikan sesuatu yang disebut "warisan tabel tunggal". Segera setelah Anda menurunkan kelas anak dari kelas induk, anak tersebut akan disimpan dalam koleksi induk dengan menambahkan atribut "type". Menggunakan "store_in" memberi tahu mongodb secara eksplisit koleksi mana yang akan menyimpan dokumen. Mendefinisikan store_in di kelas anak membuat mongoid menyimpan semuanya (termasuk induknya) dalam koleksi yang diberikan. Saya kira menggunakan tugas store_in khusus untuk setiap anak mengacaukan mongoid. Namun, hasilnya adalah dokumen disimpan secara acak di salah satu koleksi yang diberikan.

Ini dapat diselesaikan di Ruby menggunakan modul sebagai mixin untuk fungsionalitas umum. Ini dijelaskan dengan cukup baik di dokumen ini .

TAPI saya memutuskan untuk tidak melakukan ini! Alasan mengapa saya menginginkan ini adalah untuk menjaga koleksi saya tetap kecil, berharap untuk mendapatkan kinerja yang lebih baik. Setelah berbicara dengan beberapa ahli (10gen), saya pikir pendekatan yang lebih baik adalah menggunakan koleksi objek induk tunggal untuk semua elemen anak. Seharusnya tidak ada dampak pada kinerja mongodb tetapi solusinya menjadi jauh lebih fleksibel. Sebenarnya ini membuat penggunaan desain tanpa skema di mongodb jauh lebih baik.

Jadi kodenya akan terlihat seperti ini lagi:

class BaseClass
  include Mongoid::Document

  ... shared functionality

end

class ChildClass1 < BaseClass
  ...individual functionality...
end  

class ChildClass2 < BaseClass
  ...individual functionality...
end



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. kembalikan hanya satu properti _id

  2. Cara terbaik untuk menyimpan gambar di aplikasi web tumpukan MERN

  3. mongodb cara mengubah port default

  4. DB.eval() dengan Mongo Java Driver

  5. Penentu Format MongoDB $dateFromString