如何从源节点遍历多个不同的关系

时间:2019-04-11 17:16:16

标签: groovy gremlin

我的图看起来像这样

      P1
       |
      R1
       |
      Src
      /  \
     R2   R2
     /     \
    C1      C2

我试图提取节点Src,R2,C2,R1和P1,其中R表示关系,P,C分别用于父节点和子节点。

我尝试过:

g.V('src').out('R1', 'R2') // now i want some filters on node and relation depending upon type.

我能够通过从src访问关系R1然后回到Src并访问R2和C2来做到这一点,但是我试图避免重复遍历。

我是gremlin的新手,已经检查了文档,但找不到特定的文档。

1 个答案:

答案 0 :(得分:1)

有很多选择,但是我想答案取决于您最终想要实现的目标。您可以简单地将结果project() Mapg.V('src'). project('r1','r2'). by(out('R1').has(...)....fold()) by(out('R2').has(...)....fold()) 并独立处理每个边缘标签(如果它符合您的预期输出):

union()

或者如果您还没有真正准备好“结果”并且不需要将两个流分开,则可以使用g.V('src').union(out('R1').has(...), out('R2').has(...))....

>Get-SqlInstance -ServerInstance 'DEVSQL02'
Get-SqlInstance : Failed to connect to server DEVSQL02.
At line:1 char:1
+ Get-SqlInstance -ServerInstance 'DEVSQL02'
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (DEVSQL02:String) [Get-SqlInstance], ConnectionFailureException
    + FullyQualifiedErrorId : ConnectionToServerFailed,Microsoft.SqlServer.Management.PowerShell.GetSqlInstanceCommand

也许这些选项会为您提供一些启发。