OrientDB:相邻顶点的更新
OrientDB: UPDATE of adjacent vertex
背景
我在 OrientDB 中有一个用图表表示的模型。该模型由几个 class 组成,其中包括 A
和 B
。 classes 与关系 has
相连,作为从 A
到 B
的边。该边还将 A
连接到其他 classes:
A ---has--> B
A ---has--> C
问题
我想更新 B
的 属性,如果它有一个 has
边缘到具有给定 RecordID 的 A
。
我的解决方案
目前我正在选择 class B
的所有边 has
的 target/out 顶点,从给定的 RecordID 开始。这可行,但感觉我缺少更简单的解决方案。
UPDATE (SELECT expand(out('has')[@class = 'B']) FROM #11:1) SET prop = true
我还尝试了以下方法,没有按我预期的那样工作:
UPDATE B SET prop = true WHERE in('has').@rid = #11:1
我的问题
是否有比使用 SUBSELECT 更新更简单的解决方案?
我不认为有任何预制的 sql 函数可以在 update 中进行这种过滤。
您的第一个查询是可行的方法,因为它遍历而不是过滤所有顶点。是的,您有一个子查询,但它比在更新语句中使用 where 更快。
如果有这样的语法会很酷:
update #9:1.inV('edgeClassName')[@class='className'] set prop = true
我们必须使用子查询才能工作。我觉得很自然。
背景
我在 OrientDB 中有一个用图表表示的模型。该模型由几个 class 组成,其中包括 A
和 B
。 classes 与关系 has
相连,作为从 A
到 B
的边。该边还将 A
连接到其他 classes:
A ---has--> B
A ---has--> C
问题
我想更新 B
的 属性,如果它有一个 has
边缘到具有给定 RecordID 的 A
。
我的解决方案
目前我正在选择 class B
的所有边 has
的 target/out 顶点,从给定的 RecordID 开始。这可行,但感觉我缺少更简单的解决方案。
UPDATE (SELECT expand(out('has')[@class = 'B']) FROM #11:1) SET prop = true
我还尝试了以下方法,没有按我预期的那样工作:
UPDATE B SET prop = true WHERE in('has').@rid = #11:1
我的问题
是否有比使用 SUBSELECT 更新更简单的解决方案?
我不认为有任何预制的 sql 函数可以在 update 中进行这种过滤。
您的第一个查询是可行的方法,因为它遍历而不是过滤所有顶点。是的,您有一个子查询,但它比在更新语句中使用 where 更快。
如果有这样的语法会很酷:
update #9:1.inV('edgeClassName')[@class='className'] set prop = true
我们必须使用子查询才能工作。我觉得很自然。