AQL 更新在收集循环中成功但在图形遍历中抛出未找到错误
AQL update succeeds in collection loop but throws not found error in graph traversal
我想弄清楚如何在 arangodb 中使用图形遍历查询来更新边缘文档。我可以使用标准来做到这一点
FOR e IN collectionName UPDATE e with {newProps} IN collectionName
。但是我无法弄清楚我尝试使用
FOR v, e, p IN 1..5 OUTBOUND @startId GRAPH @graphName
语法。
我在 macOS Mojave 10.14.3 上使用 arangodb:latest docker 图像,我正在使用 arango 的 go 库 (github.com/arangodb/go-driver) 通过构建查询字符串并使用 Database.Query() 函数发送它。我尝试只返回我尝试更新的边缘的密钥(即只返回 e._key
而不是尝试在下面的查询中更新),并使用 arangosh 验证这确实是正确的密钥边缘我正在尝试更新。此外,如上所述,我已经能够使用关系 AQL 语法更新边缘。
这是我的查询:
FOR v, e, p IN 1..5 OUTBOUND @startId GRAPH @graphName
FILTER e.@key0 == @val0
UPDATE e._key WITH {@propName0: @propValue0} IN has_skill
RETURN {new: NEW, old: OLD}
这是我的绑定变量:
[graphName:Matthew_Loughney, key0:_from, propName0:testProp, propValue0:testVal, startId:applicant/232, val0:applicant/232]
我希望当我使用 arangosh 查看 has_skill
集合时,我会看到我的边缘现在有一个 属性 testProp
,值为 testVal
;但是,我只是收到错误 AQL: document not found (while executing)
而我的优势保持不变。
事实证明,我的过滤器返回了一些不在 has_skill
集合中的边(确切地说是总共 4 个),所以当它尝试在 has_skill
中更新时,它成功了一个我想要其他 3 个但失败了,并且由于 UPDATE 操作是原子的,所以它们都失败了。我没有注意到这一点,因为我在查看键时只查看返回的第一个边,这在我的 FOR e IN collectionName
查询中不是问题,因为显然这些都在正确的集合中,所以只返回我一直在寻找的第一个优势。
我想弄清楚如何在 arangodb 中使用图形遍历查询来更新边缘文档。我可以使用标准来做到这一点
FOR e IN collectionName UPDATE e with {newProps} IN collectionName
。但是我无法弄清楚我尝试使用
FOR v, e, p IN 1..5 OUTBOUND @startId GRAPH @graphName
语法。
我在 macOS Mojave 10.14.3 上使用 arangodb:latest docker 图像,我正在使用 arango 的 go 库 (github.com/arangodb/go-driver) 通过构建查询字符串并使用 Database.Query() 函数发送它。我尝试只返回我尝试更新的边缘的密钥(即只返回 e._key
而不是尝试在下面的查询中更新),并使用 arangosh 验证这确实是正确的密钥边缘我正在尝试更新。此外,如上所述,我已经能够使用关系 AQL 语法更新边缘。
这是我的查询:
FOR v, e, p IN 1..5 OUTBOUND @startId GRAPH @graphName
FILTER e.@key0 == @val0
UPDATE e._key WITH {@propName0: @propValue0} IN has_skill
RETURN {new: NEW, old: OLD}
这是我的绑定变量:
[graphName:Matthew_Loughney, key0:_from, propName0:testProp, propValue0:testVal, startId:applicant/232, val0:applicant/232]
我希望当我使用 arangosh 查看 has_skill
集合时,我会看到我的边缘现在有一个 属性 testProp
,值为 testVal
;但是,我只是收到错误 AQL: document not found (while executing)
而我的优势保持不变。
事实证明,我的过滤器返回了一些不在 has_skill
集合中的边(确切地说是总共 4 个),所以当它尝试在 has_skill
中更新时,它成功了一个我想要其他 3 个但失败了,并且由于 UPDATE 操作是原子的,所以它们都失败了。我没有注意到这一点,因为我在查看键时只查看返回的第一个边,这在我的 FOR e IN collectionName
查询中不是问题,因为显然这些都在正确的集合中,所以只返回我一直在寻找的第一个优势。