我具有如下数据结构:
object1.array1[object2.array2[]]
我想从object2删除array2或删除所有数组元素。
使用AQL查询是否有解决方案?
演示文档:
{
"foo": [
{"x": [1,2,3], "y": [4,5,6], "z": [7,8,9] },
{"hello": "world" }
],
"bar": true,
"_key": "0"
}
要使用AQL删除foo[0].y
([4,5,6]
),这是一种通用解决方案:
LET attr = "foo" // target top-level attribute
LET i = 0 // positive or negative index of target array element
LET subattr = "y" // sub-attribute to remove
LET doc = DOCUMENT("test/0")
LET before = SLICE(doc[attr], 0, i) // array elements before target
LET middle = UNSET(doc[attr][i], subattr) // remove sub-attribute from target element
LET after = i == -1 ? [] : SLICE(doc[attr], i+1) // elements after target
LET combined = APPEND(APPEND(before, middle), after)
UPDATE doc WITH { [attr]: combined } IN test
RETURN {NEW, OLD}
要删除"world"
,只需将其更改为LET i = 1
和LET subattr = "hello"
。