使用 Spring Data MongoDB 中的 MongoTemplate 进行查找查询时仅投影某些字段?

Joh*_*han 3 spring mongodb spring-data-mongodb mongotemplate

我想知道如果可能的话,如何使用 Spring Data MongoDB 执行查找查询mongoTemplate但不返回整个文档?使用 MongoDB 的“本机”Java 同步驱动程序,我可以这样做:

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

这样document只包含“字段”而没有其他内容。

我怎样才能做同样的事情,mongoTemplate因为我似乎找不到与projection使用时类似的东西mongoTemplate.findOne(..)。您是否需要使用聚合管道来执行此操作mongoTemplate

我正在使用 Spring Data MongoDB 版本 3.0.1.RELEASE (spring boot 2.3.3)。

Dee*_*kar 6

您可以在查询中使用include()或选项。exclude()

前任:

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

文档参考:data/mongodb/core/query/Field