3

我可以使用 mongoTemplate 或其他类/接口在集合中查找一个/几个列吗?

例如,如果我只想从集合中获取名称: users(name, password, age, email) ,我该怎么办?

4

2 回答 2

2

您可以使用方法指定查询返回的字段Query.fields()

因此,在您的情况下,假设用户集合映射到User类,查询可能如下所示:

Query query =new Query(whatever criteria you have);
query.fields().include("name");
List<User> list = template.find(query, User.class);

另一种方法是 o 扩展 MongoRepository 并指定字段 qithQuery注释:

public interface UserRepository extends MongoRepository<User, String> {

   @Query(fields="{ 'name' : 1}")
   List<User> findUserNames();

}

findUserNames应该返回User只初始化了 name 和 id 字段的实例。

编辑

从外观上看,它spring-data-mongo没有要String注册的转换器,因此您必须使用User除查询集中包含的字段之外的所有字段进行检索,null或者创建并注册一个转换器。

于 2012-10-18T10:12:27.580 回答
0

使用 Google Guava 解决您的问题。当然,您可以使用标准的 foreach 构造,但在我看来,Guava 实施起来更快并且经过良好测试。

这是带有很好示例的链接 http://www.leveluplunch.com/java/tutorials/002-transform-objects-with-guava/

于 2014-10-17T09:15:38.773 回答