gpt4 book ai didi

java - Spring Data Mongo - 查询方法和 Distinct 字段

转载 作者:可可西里 更新时间:2023-11-01 09:58:52 29 4
gpt4 key购买 nike

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

我试过这样的:

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

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

}

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

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

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

}

该代码有效,但 distinct 似乎被完全忽略了。

关于查询方法中Distinct的文档真的不清楚...

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

谢谢!

最佳答案

您将不得不使用 Spring Data MongoTemplate - MongoRepository 接口(interface)仅用于基本功能和对您查询的内容进行更精细的控制,最好使用 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());

这里是更多信息的链接:mongodb mongoTemplate get distinct field with some criteria

关于java - Spring Data Mongo - 查询方法和 Distinct 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37077687/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com