Memproyeksikan hanya bidang tertentu saat menggunakan MongoTemplate dari Spring Data MongoDB untuk kueri pencarian?
Saya bertanya-tanya bagaimana, jika memungkinkan, saya dapat menjalankan kueri pencarian dengan Spring Data MongoDB menggunakan mongoTemplate
tetapi tidak mengembalikan seluruh dokumen? Dengan driver Java Sync "asli" dari MongoDB, saya dapat melakukan seperti ini:
Document document = myCollection.find(eq("something", 12)).sort(descending("field")).limit(1).projection(include("field")).first();
sehingga document
hanya mencakup "bidang" dan tidak ada yang lain.
Bagaimana saya bisa melakukan hal yang sama mongoTemplate
karena saya tidak bisa menemukan sesuatu yang mirip dengan projection
saat menggunakan mongoTemplate.findOne(..)
. Apakah Anda perlu menggunakan pipeline Agregat untuk melakukan ini mongoTemplate
?
Saya menggunakan Spring Data MongoDB versi 3.0.1.RELEASE (boot musim semi 2.3.3).
Jawaban
Anda dapat menggunakan opsi include()
atau exclude()
dalam kueri.
ex:
Query query = new Query();
query.fields().include("name").exclude("id");
List<User> john = mongoTemplate.find(query, User.class);
Referensi Dokumentasi: data / mongodb / core / query / Field