在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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...