[英]How do I get distinct fields from MongoRepository/QueryDSL?
我的文档是
@QueryEntity @Data @Document(collection = "MyCol") public class MyCol {
@Id private String _id;
private String version;
我想将所有不同的版本存储在数据库中。
我的尝试:
public interface MyColDao extends MongoRepository<MyCol, String>, QueryDslPredicateExecutor<MyCol> {
@Query("{ distinct : 'MyCol', key : 'version'}")
List<String> findDistinctVersion();
}
或者只是没有查询注释的 findDistinctVersion。
大多数 github 的例子都有一个 By-field like
List<Person> findDistinctPeopleByLastnameOrFirstname(String lastname, String firstname);
我不需要按字段。
我在这里找到的另一个例子。
@Query("{ distinct : 'channel', key : 'game'}")
public JSONArray listDistinctGames();
这似乎对我不起作用。
我似乎无法找到 queryDSL/Morphia 的文档来执行此操作。
这个 spring 文档提供了详细信息,当你想获取不同的值时如何形成一个表达式。
我有一个类似的问题,但我无法弄清楚如何在MongoRepository
中做到这一点(据我所知,目前不可能)所以最终改用MongoTemplate
。
我相信以下会满足您的要求。
@AutoWired
MongoTemplate mongoTemplate
public List<String> getVersions(){
return mongoTemplate.findDistinct("version", MyCol.class, String.class);
}
public interface MyColDao extends MongoRepository<MyCol, String>, QueryDslPredicateExecutor<MyCol> {
@Query("{'yourdbfieldname':?0}")
List<String> findDistinctVersion(String version);
}
此版本替换您的数据库字段名称
更多你可以在这里看到
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.