空值之和为 return 空值
Sum of nulls to return null
制作方法
sum(array[*].value)
到 return NULL 如果所有值都为 NULL 或没有值?
目前 return两种情况下都是 0
我能想到的最好的是
first_document(array[*].value) ? sum(array[*].value) : null
需要迭代两次集合
有更好的方法吗?
如何使用 FOR 循环而不是 shorthand 表示法并过滤掉空值?然后我们可以检查是否还有零元素和 return 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
制作方法
sum(array[*].value)
到 return NULL 如果所有值都为 NULL 或没有值?
目前 return两种情况下都是 0
我能想到的最好的是
first_document(array[*].value) ? sum(array[*].value) : null
需要迭代两次集合
有更好的方法吗?
如何使用 FOR 循环而不是 shorthand 表示法并过滤掉空值?然后我们可以检查是否还有零元素和 return 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