Spring mongoTemplate找到专栏

时间:2012-10-18 08:03:52

标签: java mongodb spring-data

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

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

public interface UserRepository extends MongoRepository<User, String> {

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

}

findUserNames应返回User个实例,只初始化名称和ID字段。

修改

根据它的外观spring-data-mongo没有注册String的转换器,因此您必须使用除查询设置中包含的所有字段之外的所有字段检索User null或创建并注册转换器。

答案 1 :(得分:0)

使用Google Guava解决您的问题。 当然,你可以使用标准的foreach结构, 但在我看来,番石榴的实施速度更快,经过了充分的测试。

以下是具有良好示例的链接 http://www.leveluplunch.com/java/tutorials/002-transform-objects-with-guava/