使用 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 中它没有显示任何出边。

Agent Class a vertex class

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 在文档级别工作,因此它不会从顶点创建连接。使用它,你会得到一张破损的图表”,它仍然是一样的。