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)
因此,如果 a 或 b 不存在,则不会创建边。
有没有办法做这样的事情?在检查 a 和 b 之前执行 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 个边缘创建问题。
首先,我正在使用批处理命令创建一堆顶点和边。有时在尚未创建的顶点之间创建边(这取决于输入顺序,目前无法控制)。当然,东方服务器会抛出异常,而不是默默地失败。我找不到告诉它跳过它或避免创建边缘的方法。在 Neo4j 中,您可以:
MATCH (a {id:'zz'}),(b {id:'yy'})
CRAETE UNIQUE (a)-[r:REL {'id': 'xx'}]->(b)
因此,如果 a 或 b 不存在,则不会创建边。
有没有办法做这样的事情?在检查 a 和 b 之前执行 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
是否可以根据源和目标的条件发出创建命令?如果是这样,那将解决这两个问题。