[英]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.