2016-10-24 3 views
2

У меня есть следующий случай:OrientDB Включить свойство от края, подключенного к конкретной вершине

 (p:p1) 
    V1 ---E1---\ 
       \ 
       V2 (with properties) 
      /
    V1 ---E1---/ 
     (p:p2) 

Таким образом, две вершины класса V1 подключены к другому Vertex типа V2, оба ребра одного и того же класса Е1, который имеет свойство «p».

Я хотел бы запрос, который:

  • Цель экземпляр V1 (РИД)
  • считывает все записи V2 (включая все свойства), которые подключены к выбранному V1 с помощью кромки класса E1
  • Также включает свойство p от соединительного края E1 в возвращаемых документах.

Я попытался с:

SELECT *,in('E1')[p] as p FROM (SELECT EXPAND(out('E1')) FROM <V1-rid>) UNWIND p 

Но это, конечно, дают 2 результаты, так как проекция возвращает значения из обоих краев Е1. Я только хочу, чтобы inlcude p сформировал край между моими выбранными V1 и V2.

У меня есть и другие подключения к V2, которые необходимо включить, но я хотел уточнить проблему, чтобы уменьшить сложность вопроса, и я думаю (надеюсь), что они не будут мешать ответу.

Update

Разъяснение:

Я хотел бы результат быть целые У2-записи с прилагаемыми свойствами «р», так что если V2 имеет свойство v2p1 :, v2p2, полученные данные должны выглядеть что-то вроде:

{ 
    "v2p1": <value>, 
    "v2p2": <value>, 
    "p": <value> 
} 

Если последнее значение «р» от края и другие свойства от фактических V2 записей.

+0

Я думаю, вы могли бы использовать http://orientdb.com/docs/2.2/SQL-Match.html –

ответ

2

попробовать это:

select *,traversedEdge(-1).p as p from(traverse outE('E1'),inV('E1') from #21:0) where @class='V2' 
+0

Это именно то, что мне нужно, спасибо большое. – dargolith

4

Вы можете использовать этот запрос

SELECT FROM (
MATCH {CLASS:v1, AS:v1, WHERE: (@rid=#29:0)}.outE('e1'){AS:e1}.inV('e1'){AS:v2} RETURN v1, e1.p, v2 
) 

Я надеюсь, что это достаточно ясно.

+0

Кроме того, вы можете использовать 'ВЫБРАТЬ e1_p, v2 * с. ('для получения сразу всех свойств –

+0

Спасибо за ответ, синтаксис соответствия для меня является новым, очень полезным. Тем не менее, я хотел бы, чтобы запрос возвращал расширенную запись V2 (все свойства), но с добавленным правилом" p «от E1.Я обновил свой вопрос, чтобы получить более ясный результат. – dargolith

+0

@IvanMainetti using v2. * разбивает имена свойств (они будут префиксными« v2_ »), мне нужно, чтобы они были такими, какие они есть на самом деле Кстати, мне нужна фактическая запись V2, только с одним дополнительным свойством p (от присоединенного края). – dargolith

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