Spring Data Mongo-查询方法和不同字段

Bri*_*son 2 java spring mongodb spring-data

我目前正在使用Spring Data Mongo进行项目。我的存储库只是扩展MongoRepository的接口。我想添加一个自定义查询方法,以检索集合中一个字段的所有不同值。

我尝试过这样的事情:

@RepositoryRestResource(path = "devices", collectionResourceRel = "deviceInfos")
public interface DeviceInfoRepository extends MongoRepository<DeviceInfo, String> {

    @RestResource(path = "distinctUnitIds")
    List<String> findDistinctUnitIdBy();

}
Run Code Online (Sandbox Code Playgroud)

有了这些代码,Spring会给我一个错误,因为它无法建立我的列表。所以我尝试了这个:

@RepositoryRestResource(path = "devices", collectionResourceRel = "deviceInfos")
public interface DeviceInfoRepository extends MongoRepository<DeviceInfo, String> {

    @RestResource(path = "distinctUnitIds")
    List<DeviceInfo> findDistinctUnitIdBy();

}
Run Code Online (Sandbox Code Playgroud)

该代码可以工作,但独特之处似乎被完全忽略了。

关于Distinct查询方法的文档确实不清楚...

我做错什么了吗?解决使用Spring Data获得字段的不同值的最佳方法是什么?

谢谢!

Sim*_*mon 5

你将不得不使用Spring数据MongoTemplate-该MongoRepository接口仅适用于基本的功能,你所查询,其最好用的更细粒度的控制作出MongoTemplate

这是一个如何从集合中获得不同值的示例:

Criteria criteria = new Criteria();
criteria.where("dataset").is("d1");
Query query = new Query();
query.addCriteria(criteria);
List list = mongoTemplate.getCollection("collectionName")
    .distinct("source",query.getQueryObject());
Run Code Online (Sandbox Code Playgroud)

这是更多信息的链接:mongodb mongoTemplate通过某些条件获取不同的字段