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

Spring-Data mongodb menanyakan beberapa kelas yang disimpan dalam koleksi yang sama

Ini kurang lebih merupakan pertanyaan tentang bagaimana merancang koleksi Anda. Karena Mongo tidak tahu apa-apa tentang tipe, kami harus menambahkan metadata tambahan untuk dapat membedakan dokumen satu sama lain. Jadi saat membuat kueri, Anda juga perlu menambahkan batasan ini ke kueri. Perhatikan bahwa Anda dapat merujuk ke _class kunci melalui DefaultMongoTypeMapper.DEFAULT_TYPE_KEY .

Kami berpikir untuk menambahkan beberapa API ke kueri untuk menyatakan bahwa seseorang hanya ingin mendapatkan dokumen dari jenis tertentu seperti ini:

mongo.find(new Query(Teacher.class), Teacher.class);

Masih terasa agak aneh bahwa Anda harus menyatakan kelas domain dua kali (yang masuk akal jika Anda ingin membatasi hasil ke dokumen dari jenis tertentu tetapi memetakannya ke kelas yang berbeda). Selain itu, kami hanya dapat membatasi hasil pada dokumen yang memuat persis seperti itu ketik sebagai tipe disimpan sebagai String dan pewarisan hanya dapat diterapkan jika kelas telah dimuat. Jadi ketika menanyakan dokumen dengan jenis Person kita harus memuat semua dokumen terlebih dahulu, coba cari jenisnya, lakukan pemeriksaan jenis dan kemungkinan membuang hasil yang kurang optimal karena alasan kinerja.

Pilihan lain adalah menyimpan semua jenis kelas yang dapat ditetapkan (hampir semua antarmuka dan superclass kecuali Object mungkin) tetapi itu akan menyebabkan cukup banyak data yang disimpan. Hal ini pada gilirannya dapat didekati dengan menambahkan tanda ke @Document anotasi.

Intinya:saat ini, tidak ada cara lain selain meningkatkan tiket JIRA jika Anda memiliki saran bagaimana hal ini dapat ditingkatkan.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tambahkan bidang ke dokumen MongoDB yang ada (dengan Mongoose di Node.js)

  2. $addFields ketika $match tidak ditemukan

  3. Tambahkan string ke akhir bidang yang ada di MongoDB

  4. Menggunakan _id yang dihasilkan MongoDB sebagai data rahasia (misalnya, Token OAuth)

  5. Cara mendapatkan jumlah kemunculan kata kunci di dalam string menggunakan mongoDb