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

时间:2015-02-08 00:13:19

标签: orientdb

我尝试在其索引ID查询的现有顶点之间创建边缘,类似于第一个答案here,但使用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>"时,它返回一个结构如下的数组对象:

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

我猜这个错误与使用CREATE EDGE代替@rid的{​​{1}}查询有关,但我不确定。

如果我只使用rid而不是#<actual cluster>:<actual position>子查询,则查询会成功创建边。

任何想法我可能做错了什么?

编辑:为了可复制性,当我(1)向V类架构添加属性SELECT时,我在GratefulDeadConcerts数据库中遇到同样的问题,(2)创建一个唯一的name使用V下的nameIndex属性的V索引,然后(3)使用以下查询: name

1 个答案:

答案 0 :(得分:1)

为什么不直接查询课程?

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

从索引中选择将临时文档作为带有键的结果集返回,并清除

你可以尝试,但我不知道它是否会起作用

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