如何制作
sum(array[*].value)
如果所有值都为NULL或没有值,则返回NULL?
目前在两种情况下都返回0
我能想到的最好的是
first_document(array[*].value) ? sum(array[*].value) : null
需要迭代收集两次
有更好的方法吗?
答案 0 :(得分:1)
如何使用FOR循环而不是简写符号并过滤掉空值?然后我们可以检查零元素是否保留并返回null:
LET tmp = (FOR elem IN array FILTER elem.value != null RETURN elem)
RETURN LENGTH(tmp) ? SUM(tmp) : null
你也可以使用array inline expression,但它的字符大小相同:
LET tmp = arr[* FILTER CURRENT.value != null RETURN CURRENT.value]
RETURN LENGTH(tmp) ? SUM(tmp) : null