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
而不是 rid
的 CREATE 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>"
我正在尝试在通过索引 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
而不是 rid
的 CREATE 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>"