我们可以在orientdb中更新EDGE吗?

问题描述 投票:3回答:2

是否可以通过示例在orientdb中添加边缘。如果不存在,则有一种方法可以检查边缘是否存在,如果存在,则只需更新边缘,否则可以创建新边缘。我正在使用Orientdb 2.1.13版本。谢谢

orientdb upsert orientdb-2.1
2个回答
5
投票

通过SQL,您可以使用基本的UPDATE命令

update written_by SET out = #9:2, in = #16:43, prop="gianni" UPSERT WHERE out = #9:2 and in = #16:43

http://orientdb.com/docs/last/SQL-Update.html


1
投票

[当您使用“更新write_by SET输出=#9:2,输入=#16:43,prop =“ gianni” UPSERT WHERE输出=#9:2和输入=#16:43“时,它不起作用正确地用于边缘:如果边缘不存在,它将创建边缘,但不会在顶点中创建输入和输出属性,因此,例如,您将无法查询MATCH。这是因为“更新/ UPSERT在文档级别起作用,因此它不会从顶点创建连接。如作者所说,使用它,您将有一个残破的图。

但是您可以从版本3.0.1开始使用“ upsert”作为边缘,它可以正常工作-但您需要执行以下操作:

在edge_class(out,in)上创建唯一索引,而且–很奇怪–顺序很重要!为此,您需要先创建in和out属性,否则db无法创建索引,并且在尝试运行命令“ Create index”时会出现异常。然后,使用命令CREATE EDGE UPSERT FROM TO。

在这种情况下,仅当边缘不存在时才创建边缘,并且它将为顶点类创建in和out属性。

© www.soinside.com 2019 - 2024. All rights reserved.