C# Net返回同一数组中的多个子顶点
通常家庭只有一对父母,但有多个孩子, 在《小精灵》中,我可以说要有一个家庭:C# Net返回同一数组中的多个子顶点,c#,gremlin,janusgraph,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
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]}*
但我想通过这种方式得到它们:
==>{父亲=v[16408],母亲=v[450608],孩子=[v[139504],v[163880],v[176368]]
在gremlin中有没有什么方法可以做到这一点,在gremlin.Net中更具体一些。谢谢最简单的方法可能是使用以下步骤: (ID与您的不匹配,因为我必须自己创建图形,并获得其他ID。) 请注意,中的
\
是Groovy中的一个保留关键字,因此,中的\
仅对Gremlin Groovy是必需的
out('father')
是outE('father').inV()的缩写形式
您可以在Gremlin.Net中编写相同的遍历。然后它如下所示:
g.V(61464).Project<object>("father", "mother", "children").
By(Out("father")).
By(Out("mother")).
By(In("father").Fold()).Next();
g.V(61464)。项目(“父亲”、“母亲”、“孩子”)。
由(出(“父亲”))。
由(外出(“母亲”))。
由(In)(“父”).Fold().Next();
(您需要一个使用静态Gremlin.Net.Process.Traversal的
。
才能像这样编写遍历。否则By
-步骤将如下所示:By(
)。有关详细信息,请参阅TinkerPop文档。)最简单的方法可能是使用以下步骤:
(ID与您的不匹配,因为我必须自己创建图形,并获得其他ID。)
请注意,中的\
是Groovy中的一个保留关键字,因此,中的\
仅对Gremlin Groovy是必需的
out('father')
是outE('father').inV()的缩写形式
您可以在Gremlin.Net中编写相同的遍历。然后它如下所示:
g.V(61464).Project<object>("father", "mother", "children").
By(Out("father")).
By(Out("mother")).
By(In("father").Fold()).Next();
g.V(61464)。项目(“父亲”、“母亲”、“孩子”)。
由(出(“父亲”))。
由(外出(“母亲”))。
由(In)(“父”).Fold().Next();
(您需要一个使用静态Gremlin.Net.Process.Traversal的
。
才能像这样编写遍历。否则By
-步骤将如下所示:By(\uuuuuu.Out(“父”))
。有关详细信息,请参阅TinkerPop文档。)当你问Gremlin问题时,在Gremlin控制台中复制一个以Gremlin查询形式出现的示例图会很有帮助。这会让你更容易得到帮助。当你问Gremlin问题时,在Gremlin控制台中复制一个以Gremlin查询形式出现的示例图会很有帮助。这会让它变得更容易更容易帮助你。非常感谢,这非常有帮助:)嗨,Florian Hockmann,当我使用这个g.V(61464)。项目(“父亲”、“母亲”、“孩子”)。By(Out(“父亲”))。By(Out(“母亲”)。By(In(“父亲”)。Fold())。Next();如果所选顶点没有父节点,则查询将中断,我如何避免?我不确定这是否是这里的最佳解决方案,但解决此问题的一种方法是:By(out(“父”)
变为By(Coalesce(out(“父”),Constant(“无父节点”))
Coalesce
的效果是,当Out(“父”)
不返回顶点时,将执行常量步骤。非常感谢,这非常有用:)嗨,Florian Hockmann,当我使用这个g.V(61464)。项目(“父”、“母”、“子”).By(Out(“父”).By(Out(“母”).By(Out(“母”)).By(In(“father”).Fold()).Next();如果所选顶点没有父节点,则查询将中断,我如何避免?我不确定这是否是这里的最佳解决方案,但解决此问题的一种方法是:By(out(“father”)
变为By(Coalesce(out(“father”)、常量(“无父节点”))
Coalesce
的效果是,当Out(“父”)
不返回顶点时,将执行常量
步骤。