Progettare solo determinati campi quando si utilizza MongoTemplate da Spring Data MongoDB per una query di ricerca?
Mi chiedo come, se possibile, posso eseguire una query di ricerca con Spring Data MongoDB utilizzando mongoTemplate
ma non restituire l'intero documento? Con il driver Java Sync "nativo" di MongoDB posso fare così:
Document document = myCollection.find(eq("something", 12)).sort(descending("field")).limit(1).projection(include("field")).first();
in modo che il document
solo include il "campo" e nient'altro.
Come posso fare lo stesso con mongoTemplate
dal momento che non riesco a trovare qualcosa di simile a projection
quando lo uso mongoTemplate.findOne(..)
. È necessario utilizzare una pipeline aggregata per eseguire questa operazione mongoTemplate
?
Sto usando Spring Data MongoDB versione 3.0.1.RELEASE (avvio primaverile 2.3.3).
Risposte
È possibile utilizzare include()
o le exclude()
opzioni nella query.
ex:
Query query = new Query();
query.fields().include("name").exclude("id");
List<User> john = mongoTemplate.find(query, User.class);
Documentazione di riferimento: data / mongodb / core / query / Field