OrientDB 在 batch/script 中创建边缘问题

OrientDB create edge issue in batch/script

我有 2 个边缘创建问题。

首先,我正在使用批处理命令创建一堆顶点和边。有时在尚未创建的顶点之间创建边(这取决于输入顺序,目前无法控制)。当然,东方服务器会抛出异常,而不是默默地失败。我找不到告诉它跳过它或避免创建边缘的方法。在 Neo4j 中,您可以:

MATCH (a {id:'zz'}),(b {id:'yy'})
CRAETE UNIQUE (a)-[r:REL {'id': 'xx'}]->(b)

因此,如果 ab 不存在,则不会创建边。

有没有办法做这样的事情?在检查 ab 之前执行 select 是不好的,因为可以在前一批中创建顶点命令,因此不存在于数据库中,因此它必须是 osql 命令的一部分。

Second,与这个问题相关,我想我可以构建一个脚本,这样我就可以分配 select 来寻找 a b 到一个变量。

BEGIN
LET source = SELECT FROM V WHERE id = 'zz'
LET target = SELECT FROM V WHERE id = 'yy'
<< some sort of condition based on source != null and target != null? >>
LET edge = CREATE EDGE REL FROM $source TO $target
COMMIT

是否可以根据源和目标的条件发出创建命令?如果是这样,那将解决这两个问题。

它将在 2.1.7 版后可用

https://github.com/orientechnologies/orientdb-docs/blob/master/SQL-batch.md#conditional-execution