有没有办法在同一个查询中同时创建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
答案 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