OrientDB - 使用索引查询中的 rid 创建边

OrientDB - Creating an edge using rid's from index queries

我正在尝试在通过索引 ID 查询的现有顶点之间创建边,类似于第一个答案 here, but using this 索引查找查询而不是标签查询:

CREATE EDGE cite
FROM
(SELECT FROM index:<className>.<indexName> WHERE key = "<keyString>")
TO
(SELECT FROM index:<className>.<indexName> WHERE key = "<keyString>")

这给了我以下错误:com.orientechnologies.orient.core.exception.OCommandExecutionException: Source vertex '#-1:-1' not exists

可能相关:

当我自己查询 SELECT FROM index:<className>.<indexName> WHERE key = "<keyString>" 时,它 returns 一个结构如下的数组对象:

[ { '@type': 'd',
    key: '<keyString>',
    rid: { cluster: <actual cluster>, position: <actual position> }
    @rid: { cluster: -1, position: -1 } } ]

我猜测错误与使用 @rid 而不是 ridCREATE EDGE 查询有关,但我不确定。

如果我简单地使用 #<actual cluster>:<actual position> 而不是 SELECT 子查询,查询会成功创建边。

知道我做错了什么吗?

编辑:为了可复制性,当我 (1) 添加 属性 name 到 V class 模式时,我在 GratefulDeadConcerts 数据库中遇到了同样的问题,( 2) 使用 V 下的 name 属性 创建 V 的唯一 nameIndex 索引,然后 (3) 使用以下查询: create edge followed_by from (select from index:nameIndex where key = 'HEY BO DIDDLEY') to (select from index:nameIndex where key = 'IM A MAN')

为什么不直接查询 class?

CREATE EDGE cite
FROM
(select from Class where field = '<keyString>')
TO
(select from Class where field = '<keyString>')

Select 来自索引 return 一个临时文档作为结果集,带有键,并且 rid

你可以试试,不知道行不行

SELECT expand(rid) FROM index:<className>.<indexName> WHERE key = "<keyString>"