使用 UPSERT 创建边,但在顶点 class 中它在 Orientdb 中没有显示任何内容
using UPSERT create edges but in vertex class it shows nothing in Orientdb
UPDATE GeoAgentSummary set out = #45:0, in = #21:0, _2015 = sum(_2015, 10.0f) upsert where out = #45:0 and in = #21:0
我正在使用上述查询来创建边(如果不存在)或更新现有边(如果它已存在于 OrientDB
中)
在 #45:0 和 #21:0.
之间创建了一条边
但是在 Agent(顶点 class 有 45、46、47 和 48 簇)中,即在 #45:0 中它没有显示任何出边。
UPDATE
命令的作用类似于正常的文档更新,无需注意保持边顶点 "synchronization"。为此,您必须使用不支持 UPSERT
.
的 UPDATE EDGE
github 上有关于 https://github.com/orientechnologies/orientdb/issues/4436
的未决问题
另请阅读此 https://github.com/orientechnologies/orientdb/issues/1114
我知道这个问题已经有三年了,但对于其他 google 进一步的人来说:
从 3.0.1 版本开始,您可以对边使用“upsert”,它会正常工作——但您需要执行以下操作:
在 edge_class 上创建唯一索引(out,in)而且——这很奇怪——顺序很重要!
为此,您需要先创建 in 和 out 属性,否则 db 无法创建索引,当您尝试 运行 命令“创建索引”时会出现异常。
然后,使用命令 CREATE EDGE UPSERT FROM TO .
在这种情况下,只有当边不存在时才会创建边,并且会为顶点创建 in 和 out 属性 类。
但它仍然不适用于更新命令 'cos,正如作者所说,“UPDATE/UPSERT 在文档级别工作,因此它不会从顶点创建连接。使用它,你会得到一张破损的图表”,它仍然是一样的。
UPDATE GeoAgentSummary set out = #45:0, in = #21:0, _2015 = sum(_2015, 10.0f) upsert where out = #45:0 and in = #21:0
我正在使用上述查询来创建边(如果不存在)或更新现有边(如果它已存在于 OrientDB
在 #45:0 和 #21:0.
之间创建了一条边但是在 Agent(顶点 class 有 45、46、47 和 48 簇)中,即在 #45:0 中它没有显示任何出边。
UPDATE
命令的作用类似于正常的文档更新,无需注意保持边顶点 "synchronization"。为此,您必须使用不支持 UPSERT
.
UPDATE EDGE
github 上有关于 https://github.com/orientechnologies/orientdb/issues/4436
的未决问题另请阅读此 https://github.com/orientechnologies/orientdb/issues/1114
我知道这个问题已经有三年了,但对于其他 google 进一步的人来说:
从 3.0.1 版本开始,您可以对边使用“upsert”,它会正常工作——但您需要执行以下操作:
在 edge_class 上创建唯一索引(out,in)而且——这很奇怪——顺序很重要! 为此,您需要先创建 in 和 out 属性,否则 db 无法创建索引,当您尝试 运行 命令“创建索引”时会出现异常。 然后,使用命令 CREATE EDGE UPSERT FROM TO .
在这种情况下,只有当边不存在时才会创建边,并且会为顶点创建 in 和 out 属性 类。
但它仍然不适用于更新命令 'cos,正如作者所说,“UPDATE/UPSERT 在文档级别工作,因此它不会从顶点创建连接。使用它,你会得到一张破损的图表”,它仍然是一样的。