通常家庭包含一个父亲和母亲,但多个孩子, 在格雷姆林,我可以说是为了得到一个家庭:
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中更具体。感谢
答案 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 }}。)