Projeter uniquement certains champs lors de l'utilisation de MongoTemplate de Spring Data MongoDB pour une requête de recherche?
Je me demande comment, si possible, je peux exécuter une requête de recherche avec Spring Data MongoDB en utilisant mongoTemplate
mais 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 document
seul inclut le "champ" et rien d'autre.
Comment puis-je faire la même chose avec mongoTemplate
puisque je n'arrive pas à trouver quelque chose de similaire projection
lors 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
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