OrientDB包含连接到特定顶点的边的属性

OrientDB包含连接到特定顶点的边的属性,orientdb,orient-sql,Orientdb,Orient Sql,我有以下情况: (p:p1) V1 ---E1---\ \ V2 (with properties) / V1 ---E1---/ (p:p2) 因此,V1类的两个顶点连接到V2类型的另一个顶点,两条边都属于具有属性p的E1类 我想询问: 通过rid将V1实例作为目标 读取所有V2记录,包括通过边缘类E1连接到选定V1的所有属性 还包括返回文档中连接E1边缘的属性p。 我

我有以下情况:

       (p:p1)
  V1 ---E1---\ 
              \
               V2 (with properties)
              /
  V1 ---E1---/
       (p:p2)
因此,V1类的两个顶点连接到V2类型的另一个顶点,两条边都属于具有属性p的E1类

我想询问:

通过rid将V1实例作为目标 读取所有V2记录,包括通过边缘类E1连接到选定V1的所有属性 还包括返回文档中连接E1边缘的属性p。 我试过:

SELECT *,in('E1')[p] as p FROM (SELECT EXPAND(out('E1')) FROM <V1-rid>) UNWIND p
但这当然会给出2个结果,因为投影从两条E1边返回值。我只想在我选择的V1和V2之间插入p

我还有一些与V2的其他连接需要包括在内,但我想更精确地说明问题,以降低问题的复杂性,我希望它们不会干扰答案

更新

澄清:

我希望结果是带有附加属性p的完整V2记录,因此,如果V2具有属性v2p1:,v2p2,则结果记录应类似于:

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

其中最后一个p值来自边缘,其他属性来自实际的V2记录。

您可以使用此查询

SELECT FROM (
MATCH {CLASS:v1, AS:v1, WHERE: (@rid=#29:0)}.outE('e1'){AS:e1}.inV('e1'){AS:v2} RETURN v1, e1.p, v2 
) 
我希望这足够清楚。

试试这个:

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

我想你可以使用另外,你可以使用SELECT e1_p,v2.*from直接获取所有属性谢谢你的回答,匹配语法对我来说是新的,非常有用。但是,我希望查询返回扩展的V2记录所有属性,但附带来自E1的属性p。我已经更新了我的问题,以便更清楚地了解结果。@IvanMainetti使用v2.*打破属性名称,它们将以v2.*作为前缀,我需要它们是真实的,任何方法都可以吗?我需要实际的V2记录,只需要连接边缘的一个额外属性p。您可以使用as:SELECT V2。@rid as rid,V2.prop as prop,e1.p as p注意,您需要在MATCH@IvanMainetti我需要V2中的所有任意属性,这是我的主要问题。要从V2获取所有属性,还要从边缘E1获取一个属性。