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

Project only certain fields when using MongoTemplate from Spring Data MongoDB for a find query?

我想知道,如果可能的话,我如何使用 mongoTemplate 而不是 return 整个文档来执行 Spring 数据 MongoDB 的查找查询?使用来自 MongoDB 的“本地”Java 同步驱动程序,我可以这样做:

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

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

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

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

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

例如:

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

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