2012-10-18 36 views
3

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

例如,如果我只想从集合中获得名称:用户(姓名,密码,年龄,电子邮件) ,我该怎么办?

回答

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并指定领域qith Query注释:

public interface UserRepository extends MongoRepository<User, String> { 

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

} 

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

编辑

通过看起来它spring-data-mongo没有一个转换器String注册的,所以你必须要么检索User与除包括在查询中的那些所有字段设置为null或创建和注册一个转换器。

+0

使用模板的链接可以得到名称列表? – user1755541

+0

@ user1755541不确定mongo是否已将转换器注册为DBObject为String,但您可以轻松尝试(只需将User更改为String)。你当然可以得到一个只有'name'元素集的Map。 – soulcheck

+0

@ user1755541看起来你不能默认。 – soulcheck