gpt4 book ai didi

java - Spring Data Mongo 返回列表而不是字符串

转载 作者:行者123 更新时间:2023-11-30 02:28:24 25 4
gpt4 key购买 nike

在我的 Spring Boot 应用程序中,我正在查询文档集合。我正在尝试执行聚合操作,将相似的字段分组在一起并对它们进行计数。

问题是,虽然返回了正确的值,但它们应该只是普通字符串“[\”测试名称\”]”应该是“测试名称”

我可以使用 @Id 注释解决其中一个字段的这个问题,但 spring data Mongo 不喜欢复合键,所以我不能使用它作为解决方案。

如何只返回字符串值而不返回下面给出的值。

{
"exampleDateTime": 1392029442389,
"exampleName": "[ \"Test Name\"]",
"exampleDescription": "[ \"Test Description\"]",
"exampleCount": 1
}

所以我有一个像这样的java对象

@Document(collection = "ExampleCollection")
public class Example{
private Date exampleDateTime;
private String exampleName;
private String exampleDescription;
private int exampleCount;

...getters and setters...
}

存储库的聚合实现

    public class ExampleRepositoryImpl implements ExampleRepositoryCustom {


@Autowired
MongoTemplate mongoTemplate;

@Override
public List<Example> countExampleByName() {
Aggregation aggregation = Aggregation.newAggregation(
Aggregation.group("exampleName").addToSet("exampleName").as("exampleName").addToSet("exampleDateTime").as("exampleDateTime")
.addToSet("exampleDescription").as("exampleDescription").count().as("exampleCount")

AggregationResults<Example> groupResults = mongoTemplate.aggregate(
aggregation,"ExampleCollection", Example.class);

List<Example> result = groupResults.getMappedResults();
return result;
}
}

最佳答案

当您使用addToSet时,返回集合类型,spring 调用 toString()将其转换为字符串类型(注意 [] 周围的引号),如 pojo 中定义的

替换您的聚合以使用 first

Aggregation aggregation = Aggregation.newAggregation( 
Aggregation.group("exampleName")
.first("exampleName").as("ex‌​ampleName")
.first("e‌​xampleDateTime").as(‌​"exampleDateTime")
.first("exampleDescription").as("exampleDescription")
.count(‌​).as("exampleCount")

或者

将 pojo 中的类型更改为 String[]或字符串集合(如果您需要使用 addToSet)

关于java - Spring Data Mongo 返回列表而不是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44948853/

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