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

标签 orientdb orient-sql

我有以下情况:

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

因此,V1 类的两个顶点连接到 V2 类型的另一个顶点,两条边属于具有属性“p”的同一类 E1。

我想要一个查询:

  • 以 V1 实例为目标(通过 rod)
  • 读取通过边类 E1 连接到所选 V1 的所有 V2 记录(包括所有属性)
  • 还包括返回文档中连接 E1 边的属性 p。

我尝试过:

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

但是这当然会给出 2 个结果,因为投影从两个 E1 边缘返回值。我只想将 p 包含在我选择的 V1 和 V2 之间的边缘。

我还有一些与 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 
) 

我希望这足够清楚。

关于OrientDB 包含连接到特定顶点的边的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40221860/

相关文章:

java - 使用 OrientDB 查找最短路径

orientdb - 如何使用java在orientdb中存储和检索图像?

javascript - OrientDB No database instance found in context 错误?

scala - 如何从 Scala/Play 2.2 项目中使用 OrientDB?

graph - orientDB 在查找 2 个顶点之间的路径时的检索时间