簡體   English   中英

如何從 MongoRepository/QueryDSL 獲取不同的字段?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM