如何在使用Spring Data进行聚合期间在我的投影阶段添加条件?
例如,我想添加将由公式new_field
计算的field1 / field2
。从代码方面看起来像:
ProjectionOperation projectionOperation = project("field1", "field2").andExpression("field1 / field2").as("field3");
但如果field2
等于0
,我会收到错误。因此,为了避免这种情况,建议使用$cond
运算符,但我不知道它在代码中应该是什么样子。有人有什么想法吗?
请注意。表达式field2 != 0 ? 1 : 0
不起作用(即使“SpEL”允许这样的语法)。
答案 0 :(得分:1)
我只是遇到了同样的问题。 !=似乎不受支持,但是您可以在SPeL中使用“ ifNull”或“ cond”。
答案 1 :(得分:0)
为时已晚,但是对于以后这个问题的读者来说,以下代码对我有用。当field2为0时,它将返回0作为field3的值。
ProjectionOperation projectionOperation = Aggregation.project("field1, field2")
.and(AggregationSpELExpression.expressionOf("cond(field2 == 0, 0, field1/field2)"))
.as("field3");
答案 2 :(得分:0)