繁体   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