gpt4 book ai didi

spring - 在 Spring MongoDB 组聚合中使用减法

转载 作者:可可西里 更新时间:2023-11-01 09:13:33 24 4
gpt4 key购买 nike

当我在 Mongo 中使用命令行时,我有以下聚合查询。

{'$group': 
{ '_id':
{'serviceName': '$serviceName'},
'timeAverage':
{'$avg':
{'$subtract': ['$lastCheckTime', '$enqueuedTime']}
}
}
}

但据我所知,在 Spring MongoDB 中,不支持在组操作中的 avg 操作中执行“减法”。

我将如何着手完成这项工作?

最佳答案

您可以先尝试使用 SpEL andExpression 投影差异场在projection操作中,然后在group操作中的avg累加器中使用:

Aggregation agg = newAggregation(
project("serviceName")
.andExpression("lastCheckTime - enqueuedTime").as("interval")
group("serviceName")
.avg("interval").as("timeAverage")
);

或使用 $subtract 算术聚合运算符,在 Spring Data MongoDB 中支持为 minus()

Aggregation agg = newAggregation(
project("serviceName")
.and("lastCheckTime").minus("enqueuedTime").as("interval")
group("serviceName")
.avg("interval").as("timeAverage")
);

这转化为以下 native 聚合操作:

[
{
"$project": {
"serviceName": 1,
"interval": { "$subtract":[ "$lastCheckTime", "$enqueuedTime" ] }
}
},
{
"$group": {
"_id": "$serviceName",
"timeAverage": { "$avg": "$interval" }
}
}
]

关于spring - 在 Spring MongoDB 组聚合中使用减法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33660664/

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