2015-02-08 3 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>" сам по себе он возвращает A 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.

Любые идеи, что я могу делать неправильно?

Edit: В интересах воспроизводимости, у меня та же проблема, в базе данных GratefulDeadConcerts, когда я (1) добавить свойство name к V класса схемы, (2) создать уникальный nameIndex индекс V, используя name недвижимость под 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

Смежные вопросы