如何在Spring Data MongoDB中仅返回查询的特定字段?

我们如何在春季数据Mongo中选择特定字段。我尝试了以下方法,但我从 到 强制转换异常 。FooString

@Query

@Query(value="{path : ?0}", fields="{path : 0}")
String findPathByPath(String path);

@Query

String findPathByPath(String path);

下面是文档模型

@Document(collection = "foo")
public class Foo  {

  String name, path;
  …
}

答案 1

MongoDB仅返回用于标准查询的JSON文档。您希望看到的内容可以通过仍然返回 .中的属性将导致仅返回设置为 1 的字段。List<Foo>fields@Query

@Query(value="{ path : ?0}", fields="{ path : 0 }")
List<Foo> findByPath(String path);

我们通常建议为此引入一个已指定的 DTO,以便防止将部分填充的实例依次交给该实例。Foosave(…)

另一种选择是使用聚合框架,但这更复杂。


答案 2

您可以使用

Query query = new Query();

query.fields().include("path");