2015-02-08 127 views
0

我試圖創造以自己的索引標識,類似於第一個答案here查詢現有頂點之間的邊,但使用this索引查找查詢,而不是標籤查詢:OrientDB - 創建使用擺脫的從指數的邊緣查詢

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>"本身它返回一個rray對象結構類似:

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

我猜的錯誤有事情做與CREATE EDGE查詢使用@rid代替rid,但我不知道。

如果我只是簡單地使用#<actual cluster>:<actual position>而不是SELECT子查詢,查詢就成功創建了邊。

任何想法,我可能做錯了什麼?

編輯:在舉一反三的利益,我在GratefulDeadConcerts數據庫同樣的問題,當我(1)添加屬性name到V類架構,(2)創建一個使用name財產V的獨特nameIndex指數在V下,然後(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')

回答

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>" 
+0

謝謝,您的兩個建議很有效。我想我最初嘗試了一些類似於你的第一個建議的東西,但是我無法得到它的工作,這就是爲什麼我最終試圖使用'index:'格式。 – ropeladder 2015-02-13 21:04:43