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.