Projetar apenas alguns campos ao usar MongoTemplate do Spring Data MongoDB para uma consulta de localização?
Gostaria de saber como, se possível, posso executar uma consulta find com Spring Data MongoDB usando, mongoTemplate
mas não retornar o documento inteiro? Com o driver Java Sync "nativo" do MongoDB, posso fazer o seguinte:
Document document = myCollection.find(eq("something", 12)).sort(descending("field")).limit(1).projection(include("field")).first();
de modo que document
apenas inclui o "campo" e nada mais.
Como posso fazer o mesmo com mongoTemplate
uma vez que não consigo encontrar algo semelhante a projection
quando uso mongoTemplate.findOne(..)
. Você precisa usar um pipeline Aggregate para fazer isso mongoTemplate
?
Estou usando o Spring Data MongoDB versão 3.0.1.RELEASE (spring boot 2.3.3).
Respostas
2 DeepakPatankar
Você pode usar include()
ou exclude()
opções na consulta.
ex:
Query query = new Query();
query.fields().include("name").exclude("id");
List<User> john = mongoTemplate.find(query, User.class);
Referência da documentação: data / mongodb / core / query / Field
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino