首页 > 解决方案 > 使用 Spring Data MongoDB 中的 MongoTemplate 进行查找查询时仅投影某些字段?

问题描述

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

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

这样就document只包括“字段”,仅此而已。

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

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

标签: springmongodbspring-data-mongodbmongotemplate

解决方案


您可以在查询中使用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


推荐阅读