Memproyeksikan hanya bidang tertentu saat menggunakan MongoTemplate dari Spring Data MongoDB untuk kueri pencarian?

Aug 15 2020

Saya bertanya-tanya bagaimana, jika memungkinkan, saya dapat menjalankan kueri pencarian dengan Spring Data MongoDB menggunakan mongoTemplatetetapi 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 documenthanya mencakup "bidang" dan tidak ada yang lain.

Bagaimana saya bisa melakukan hal yang sama mongoTemplatekarena saya tidak bisa menemukan sesuatu yang mirip dengan projectionsaat 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

2 DeepakPatankar Aug 15 2020 at 12:29

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