我可以使用mongoTemplate或其他类/接口在集合中查找一个/多个列吗?Spring mongoTemplate查找特殊列
例如,如果我只想从集合中获得名称:用户(姓名,密码,年龄,电子邮件) ,我该怎么办?
我可以使用mongoTemplate或其他类/接口在集合中查找一个/多个列吗?Spring mongoTemplate查找特殊列
例如,如果我只想从集合中获得名称:用户(姓名,密码,年龄,电子邮件) ,我该怎么办?
您可以用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
或创建和注册一个转换器。
使用Google Guava解决您的问题。 当然,您可以使用标准的foreach构建, ,但在我看来,番石榴更快实施和测试。
这里是一个很好的例子 http://www.leveluplunch.com/java/tutorials/002-transform-objects-with-guava/
使用模板的链接可以得到名称列表? –
user1755541
@ user1755541不确定mongo是否已将转换器注册为DBObject为String,但您可以轻松尝试(只需将User更改为String)。你当然可以得到一个只有'name'元素集的Map。 – soulcheck
@ user1755541看起来你不能默认。 – soulcheck