Projeter uniquement certains champs lors de l'utilisation de MongoTemplate de Spring Data MongoDB pour une requête de recherche?

Aug 15 2020

Je me demande comment, si possible, je peux exécuter une requête de recherche avec Spring Data MongoDB en utilisant mongoTemplatemais sans retourner le document entier? Avec le pilote Java Sync "natif" de MongoDB, je peux faire comme ceci:

Document document = myCollection.find(eq("something", 12)).sort(descending("field")).limit(1).projection(include("field")).first();

de sorte que le documentseul inclut le "champ" et rien d'autre.

Comment puis-je faire la même chose avec mongoTemplatepuisque je n'arrive pas à trouver quelque chose de similaire projectionlors de l'utilisation mongoTemplate.findOne(..). Avez-vous besoin d'utiliser un pipeline Aggregate pour ce faire mongoTemplate?

J'utilise Spring Data MongoDB version 3.0.1.RELEASE (spring boot 2.3.3).

Réponses

2 DeepakPatankar Aug 15 2020 at 12:29

Vous pouvez utiliser les options include()ou exclude()dans la requête.

ex:

Query query = new Query();
query.fields().include("name").exclude("id");
List<User> john = mongoTemplate.find(query, User.class);

Référence de documentation: data / mongodb / core / query / Field