如何使用 Spring Data 在聚合过程中在投影阶段添加条件?
例如,我想添加将通过公式 field1/field2
计算的 new_field
。从代码方面来看,它看起来像:
ProjectionOperation projectionOperation = project("field1", "field2").andExpression("field1 / field2").as("field3");
但是如果 field2
等于 0
,我会收到错误。因此,为了避免这种情况,建议使用 $cond 运算符,但我不知道它在代码中应该是什么样子。大家有什么想法吗?
注意。表达式 field2 != 0 ? 1 : 0
不起作用(即使“SpEL”允许这样的语法)。
最佳答案
有点晚了,但对于这个问题的 future 观众来说,以下代码对我有用。当field2为0时,返回0作为field3的值。
ProjectionOperation projectionOperation = Aggregation.project("field1, field2")
.and(AggregationSpELExpression.expressionOf("cond(field2 == 0, 0, field1/field2)"))
.as("field3");
关于spring-data - 投影中的Spring数据MongoDB条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38015488/