在AQL中如何重新父级顶点

时间:2016-02-24 19:17:46

标签: arangodb

我试图重新设定一个顶点。我试过这个,但似乎没有效果

FOR c IN pm_child FILTER c._to == 'pmlibrary/48198494363' UPDATE c WITH {_from: 'pmattic/48212650139'} IN pm_child

当我查看pm_child集合时,_from字段未被触及。修改边缘的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

_key - 属性_from_to are system attributes and thus immutable.

因此,虽然您可以在创建文档时指定它们,但您以后无法对其进行更改。

您需要使用新的_from_to创建新文档,以实现您的目标。

We're thinking about how queries could raise a warning但是还没有找到一个好的解决方案。

我将举例说明如何执行此操作using the social graph - 让 bob 成为 charly 的朋友并断开 bob 戴安娜。我们需要创建一个新文档MERGE现有边缘及其新_to

FOR rel IN relation FILTER rel._id == "relation/bobAndDiana"
  LET newRel = MERGE(rel, {_to: "persons/charlie",
                           _id:"relation/bobAndCharlie",
                           fieldToWhipe: null,
                           _key: "bobAndCharlie"})
  INSERT newRel IN relation RETURN newRel

并删除另一个查询中的原始边缘(您可能想为此编写一个事务):

FOR rel IN relation FILTER rel._id == "relation/bobAndDiana" REMOVE rel IN relation

使用ArangoDB 3.0版本可以直接更新_from_to