Gremlin.Net在同一个数组中返回多个子顶点

时间:2018-01-13 16:13:10

标签: c# gremlin janusgraph

通常家庭包含一个父亲和母亲,但多个孩子, 在格雷姆林,我可以说是为了得到一个家庭:

g.V(61464).as('me').outE('father').inV().as('father').select('me').outE('mother').inV().as('mother').select('me').inE('father').outV().as('child').select('father', 'mother', 'child')

这将返回以下内容:

 - ==> *{father=v[16408], mother=v[450608], child=v[139504]}*
 - ==> *{father=v[16408], mother=v[450608], child=v[163880]}*
 - ==> *{father=v[16408], mother=v[450608], child=v[176368]}*

但我希望以这种方式得到它们:

  

==> {father = v [16408],mother = v [450608],children = [v [139504],v [163880],v [176368]]

有没有办法在gremlin中做到这一点,在Gremlin.Net中更具体。感谢

1 个答案:

答案 0 :(得分:3)

最简单的方法可能是project步骤:

__

(ids不会与你的匹配,因为我必须自己创建图表并获得其他ID。)

请注意,__.in('father') in仅对Gremlin-Groovy是必需的,因为out('father')是Groovy中的保留关键字, outE('father').inV()g.V(61464).Project<object>("father", "mother", "children"). By(Out("father")). By(Out("mother")). By(In("father").Fold()).Next(); 的缩写形式。

您可以在Gremlin.Net中编写相同的遍历。然后它看起来像这样:

using static Gremlin.Net.Process.Traversal.__;

(您需要By能够像这样编写遍历。否则By(__.Out("father")) - 步骤将如下所示:{{1}}。请参阅TinkerPop文档{{3 }}。)