OrientDB Edge 更新插入问题
OrientDB Edge upsert issues
当我尝试使用语法 UPDATE/UPSERT 边缘时:
更新关系集 in = #123,out = #456 upsert where in = #123 and out = #456
已创建边,但未填充 Vertex in 和 out 属性,这意味着该图不可遍历(并且只是浏览器中浮动顶点的集合)。
这与按预期工作的基本 CREATE 命令形成对比:
创建从#123 到#456 的边关系
如何使 UPDATE/UPSERT 版本正确填充顶点属性?
UPDATE EDGE
不支持 UPSERT
,参见 issue #4436
从 3.0.1 版本开始,您可以对边使用“upsert”,它会正常工作——但您需要执行以下操作:
在 edge_class 上创建唯一索引(out,in)而且——这很奇怪——顺序很重要!
为此,您需要先创建 in 和 out 属性,否则 db 无法创建索引,当您尝试 运行 命令“创建索引”时会出现异常。
然后,使用命令 CREATE EDGE UPSERT FROM TO .
在这种情况下,只有当边不存在时才会创建边,并且会为顶点 类.
创建 in 和 out 属性
但它仍然不适用于更新命令 'cos,正如作者所说,“UPDATE/UPSERT 在文档级别工作,因此它不会从顶点创建连接。使用它,你会得到一张破损的图表”,它仍然是一样的。
当我尝试使用语法 UPDATE/UPSERT 边缘时:
更新关系集 in = #123,out = #456 upsert where in = #123 and out = #456
已创建边,但未填充 Vertex in 和 out 属性,这意味着该图不可遍历(并且只是浏览器中浮动顶点的集合)。
这与按预期工作的基本 CREATE 命令形成对比:
创建从#123 到#456 的边关系
如何使 UPDATE/UPSERT 版本正确填充顶点属性?
UPDATE EDGE
不支持 UPSERT
,参见 issue #4436
从 3.0.1 版本开始,您可以对边使用“upsert”,它会正常工作——但您需要执行以下操作:
在 edge_class 上创建唯一索引(out,in)而且——这很奇怪——顺序很重要! 为此,您需要先创建 in 和 out 属性,否则 db 无法创建索引,当您尝试 运行 命令“创建索引”时会出现异常。 然后,使用命令 CREATE EDGE UPSERT FROM TO .
在这种情况下,只有当边不存在时才会创建边,并且会为顶点 类.
创建 in 和 out 属性但它仍然不适用于更新命令 'cos,正如作者所说,“UPDATE/UPSERT 在文档级别工作,因此它不会从顶点创建连接。使用它,你会得到一张破损的图表”,它仍然是一样的。