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

问题描述

我想知道如何在可能的情况下使用mongoTemplate使用Spring Data MongoDB执行查找查询,但不返回整个文档吗?使用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版本(春季启动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