问题描述
基本上,我有两个字段“ totalAmountWithShipping”和“ totalAmountPlusShipping”,并且如果“ totalAmountWithShipping”大于0,则想将“ totalAmountWithShipping”投影到一个名为“ realTotalAmount”的新字段,否则将“ totalAmountPlusShipping”投影到“ realTotalAmount”。
我尝试了这个:
project("day", "month", "year")
.and(
ConditionalOperators.`when`(
ComparisonOperators.Eq.valueOf("totalAmountWithShipping").equalToValue(0.0)
).thenValueOf("totalAmountPlusShipping").otherwiseValueOf("totalAmountWithShipping")).`as`("realTotalAmount")
但如果条件为true,则始终在“ realTotalAmount”上获得0.0(即,如果我投影“ totalAmountPlusShipping”)。 但是,如果条件为假,它将按应有的方式工作。
如果我尝试:
project("day", "month", "year")
.and(
ConditionalOperators.`when`(
ComparisonOperators.Eq.valueOf("totalAmountWithShipping").equalToValue(0.0)
).then(100.0).otherwise(1.0)).`as`("realTotalAmount")
它按预期工作。
1楼
由于您要传递对该字段的引用,因此请在字段名称中使用“ $”。 以下查询应该工作:
project("day", "month", "year")
.and(
ConditionalOperators.when(
ComparisonOperators.Eq.valueOf("$totalAmountWithShipping").equalToValue(0.0)
).thenValueOf("$totalAmountPlusShipping").otherwiseValueOf("$totalAmountWithShipping")).as("realTotalAmount")