Spring Data Mongo - 查询方法和 Distinct 字段 [英] Spring Data Mongo - Query methods and Distinct field

查看:35
本文介绍了Spring Data Mongo - 查询方法和 Distinct 字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm currently working on a project using Spring Data Mongo. My repository is just an interface extending MongoRepository. I would like to add a custom query method in order to retrieve all distinct values for one of my collection's fields.

我尝试过这样的事情:

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

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

}

使用该代码,Spring 给我一个错误,因为它无法构建我的列表.所以我尝试了这个:

With that code, Spring give me an error because it's not able to build my list. So I tried this:

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

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

}

该代码有效,但似乎完全忽略了不同的代码.

That code works but the distinct seems to be totally ignored.

Distinct in query method 的文档真的不清楚...

The documentation about Distinct in query method is really not clear...

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

Did I do something wrong? What's the best way to solve get the distinct values of a field using Spring Data?

谢谢!

推荐答案

您将不得不使用 Spring Data MongoTemplate - MongoRepository 接口仅用于基本功能和要对查询内容进行更精细的控制,最好使用 MongoTemplate.

You will have to use Spring Data MongoTemplate - the MongoRepository interfaces are made only for basic functionality and for more fine grain control of what you are querying, its best to use MongoTemplate.

以下是如何从集合中获取不同值的示例:

Here is an example of how one would get distinct values from a collection:

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());

这里是更多信息的链接:mongodb mongoTemplate 获取不同的字段有一些标准

Here is the link to more info: mongodb mongoTemplate get distinct field with some criteria

这篇关于Spring Data Mongo - 查询方法和 Distinct 字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆