OrientDB:相邻顶点的更新

OrientDB: UPDATE of adjacent vertex

背景

我在 OrientDB 中有一个用图表表示的模型。该模型由几个 class 组成,其中包括 AB。 classes 与关系 has 相连,作为从 AB 的边。该边还将 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

我们必须使用子查询才能工作。我觉得很自然。