我可以使用 mongoTemplate 或其他类/接口在集合中查找一个/几个列吗?
例如,如果我只想从集合中获取名称: users(name, password, age, email) ,我该怎么办?
我可以使用 mongoTemplate 或其他类/接口在集合中查找一个/几个列吗?
例如,如果我只想从集合中获取名称: users(name, password, age, email) ,我该怎么办?
您可以使用方法指定查询返回的字段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
或者创建并注册一个转换器。
使用 Google Guava 解决您的问题。当然,您可以使用标准的 foreach 构造,但在我看来,Guava 实施起来更快并且经过良好测试。
这是带有很好示例的链接 http://www.leveluplunch.com/java/tutorials/002-transform-objects-with-guava/