Spring数据MongoDB聚合中的属性始终为空

RBF

我有以下代码尝试按 modelId 分组并显示两个不同的计数:

 DBObject query = new BasicDBObject("$group", new BasicDBObject(
            "_id", "$response.modelId")
            .append("okCount", new BasicDBObject(
                            "$sum", new BasicDBObject(
                            "$cond", new Object[]{new BasicDBObject("$and", new Object[]{new BasicDBObject("$ne", new Object[]{"$responseData", null}), new BasicDBObject("$eq", new Object[]{"$responseStatus", null})}), 1, 0})
                    )
            ).append("notOkCount", new BasicDBObject(
                            "$sum", new BasicDBObject(
                            "$cond", new Object[]{new BasicDBObject("$ne", new Object[]{"$responseStatus", null}), 1, 0})
                    )
            ));
    Aggregation aggregation = newAggregation(match(Criteria.where("response.modelId").ne(null)), new CustomGroupOperation(query));
    AggregationResults<RequestTraceCount> results = mongoTemplate.aggregate(aggregation, "RequestHistory", RequestTraceCount.class);

我确实得到了正确的计数,但是因为 modelId 嵌套在响应中,所以我在每个结果中得到 _id 等于 null。

我怎样才能解决这个问题?

结果如下:

 [{"okCount": 301,"notOkCount": 66,"_id": null},{"okCount": 11,"notOkCount": 6,"_id": null}]

这是集合中的示例文档:

{
"_id" : "01e71704-0f40-4c34-8685-dee990b6f38c",
"response" : {
    "id" : "6b728429-2f28-4588-b045-15198a8c50ac",
    "modelId" : "c902cdbc-b4e2-4ca2-a2eb-beb827705325",
    "modelCode" : "EDBW",
    "validFrom" : 201507,
    "validTo" : 201909
},
"responseData" : { /* large object */
    },
"responseStatus" : null
}

这里是类 RequestTraceCount 和 CustomGroup Operation

public class RequestTraceCount {
@JsonProperty("_id")
private UUID modelId;
private int okCount;
private int notOkCount;

public UUID getModelId() {
    return modelId;
}

public void setModelId(UUID modelId) {
    this.modelId = modelId;
}

public int getOkCount() {
    return okCount;
}

public void setOkCount(int okCount) {
    this.okCount = okCount;
}

public int getNotOkCount() {
    return notOkCount;
}

public void setNotOkCount(int notOkCount) {
    this.notOkCount = notOkCount;
}
}






class CustomGroupOperation implements AggregationOperation {
private DBObject operation;

public CustomGroupOperation(DBObject operation) {
    this.operation = operation;
}

@Override
public DBObject toDBObject(AggregationOperationContext context) {
    return context.getMappedObject(operation);
}
}
s7vr

您可以使用 spring mongo 注释@Field("_id")将其正确映射回来。

import org.springframework.data.mongodb.core.mapping.Field;

@Field("_id")
private UUID modelId;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Android中,savedInstanceState中的数据始终为空

来自分类Dev

HtmlAgilityPack-属性属性始终为空

来自分类Dev

数据库中的BLOB始终为空

来自分类Dev

序列化器中的数据始终为空

来自分类Dev

数据库中的BLOB始终为空

来自分类Dev

MVC中的AJAX POST数据行始终为空

来自分类Dev

聚合在MongoDB中存储为time_t的数据

来自分类Dev

MongoDB聚合查询的Spring数据

来自分类Dev

Autofac属性注入始终为空

来自分类Dev

Spring数据等效于MongoDB中的以下聚合操作

来自分类Dev

IXMLDocument无法读取数据,因为IXMLNode.Text属性始终为空

来自分类Dev

Spring 3 Autowire始终为空

来自分类Dev

Spring REST @RequestBody始终为空

来自分类Dev

在PHPUnit测试中,请求对象中的BasePath属性始终为空

来自分类Dev

在测试套件中运行时,云功能中的事务中的数据始终为空

来自分类Dev

在Go中序列化MongoDB数据时的空属性

来自分类Dev

元素在IE 8中始终为空

来自分类Dev

在Laravel 5.2中ErrorBag始终为空

来自分类Dev

Kotlin中的场注入始终为空

来自分类Dev

DataTemplate中的CollectionView始终为空

来自分类Dev

反应“this”在函数中始终为空

来自分类Dev

MongoDb聚合查询转换为Spring数据

来自分类Dev

为什么我的请求实体InputStream在ContainerRequestFilter(Spring + Jersey)中始终为空

来自分类Dev

如何在MongoDB聚合中包括属性

来自分类Dev

Spring Boot中的数据库字段为空的问题

来自分类Dev

验证组合框的SelectedText属性是否为空始终失败

来自分类Dev

带有 CalendarExtender 的 TextBox 的 .Text 属性始终为空

来自分类Dev

Spring Data MongoDB中的聚合总和

来自分类Dev

删除空的MongoDB聚合

Related 相关文章

热门标签

归档