Nur bestimmte Felder projizieren, wenn MongoTemplate aus Spring Data MongoDB für eine Suchabfrage verwendet wird?
Ich frage mich, wie ich, wenn möglich, eine Suchabfrage mit Spring Data MongoDB ausführen kann, indem ich mongoTemplate
das gesamte Dokument verwende, aber nicht zurückgebe. Mit dem "nativen" Java Sync-Treiber von MongoDB kann ich Folgendes tun:
Document document = myCollection.find(eq("something", 12)).sort(descending("field")).limit(1).projection(include("field")).first();
so dass das document
einzige das "Feld" und sonst nichts enthält.
Wie kann ich dasselbe tun, mongoTemplate
da ich scheinbar nichts Ähnliches finde wie projection
bei der Verwendung mongoTemplate.findOne(..)
? Müssen Sie dazu eine Aggregat-Pipeline verwenden mongoTemplate
?
Ich verwende Spring Data MongoDB Version 3.0.1.RELEASE (Spring Boot 2.3.3).
Antworten
Sie können include()
oder exclude()
Optionen in der Abfrage verwenden.
Ex:
Query query = new Query();
query.fields().include("name").exclude("id");
List<User> john = mongoTemplate.find(query, User.class);
Dokumentationsreferenz: data / mongodb / core / query / Field