Vertex和Edge的更新和Upsert

时间:2015-05-18 12:30:39

标签: orientdb upsert

有没有办法在同一个查询中同时创建Vertex和Edge?

我知道我们可以使用out_EdgeName / in_EdgeName更新顶点的边缘(如果它已经存在于UPDATE查询中),但是如何创建它以便创建新边并将其分配给顶点?

更新Upsert 查询中的用例示例 - 正在创建顶点,我们需要为该顶点创建新的Edge。我们可以在同一个查询中执行此操作,或者至少需要2次查询(即2次更新 - 上次服务)?

orientdb sql update edge?获取提示:

类似的东西 - UPDATE Persons SET phone = 000000,out_Inside =(   UPDATE Edge UPSERT where = @ some_rid / sub-query,out = $ this)where person_id = 8

1 个答案:

答案 0 :(得分:0)

如果您使用的是新版本的orientdb 2.1,那么这个问题就是实际问题。 但据我所知,这个功能是在2.2版本中实现的。

"据我所知,更新工作(包括进/出):"

UPDATE FRIEND SET in=#11:5 WHERE in.name="Samantha" and out.name="Mat"

虽然在in / out的set子句中使用查询会导致它返回数组:

UPDATE Friend SET in=(SELECT FROM User WHERE name="Jason") WHERE in.name="Samantha" and out.name="Mat"

Upsert也有效,但在创建新顶点时,它不会设置输入/输出属性。 您可以设置自己的输入/输出属性,如下所示:

UPDATE Friend SET comment="Wazzzaup", in=#11:5, out=#11:6 UPSERT WHERE in.name="Jason" AND out.name="Mat"

当使用in =和out =的子查询时,它将导致更长的查询,但至少它有效(子查询与上面的问题相同)。

我从问题中得到了这些信息: https://github.com/orientechnologies/orientdb/issues/1114#issuecomment-156585776