【发布时间】:2016-04-27 03:49:27
【问题描述】:
我正在尝试重新设置一个顶点。这个我试过了,好像没有效果
FOR c IN pm_child FILTER c._to == 'pmlibrary/48198494363' UPDATE c WITH {_from: 'pmattic/48212650139'} IN pm_child
当我查看 pm_child 集合时,_from 字段保持不变。修改边缘的正确方法是什么?
【问题讨论】:
标签: arangodb
我正在尝试重新设置一个顶点。这个我试过了,好像没有效果
FOR c IN pm_child FILTER c._to == 'pmlibrary/48198494363' UPDATE c WITH {_from: 'pmattic/48212650139'} IN pm_child
当我查看 pm_child 集合时,_from 字段保持不变。修改边缘的正确方法是什么?
【问题讨论】:
标签: arangodb
作为_key-属性_from和_toare 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。
【讨论】:
null 的值,这将导致该字段未设置,以便数据库可以为您生成它。我已经编辑了查询来证明这一点。