我可以使用mongoTemplate或其他类/接口在集合中查找一个/多个列吗?
例如,如果我想只从集合中获取名称:users(name,password,age,email) ,我怎么办?
答案 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/