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(“父”)
不返回顶点时,将执行
常量
步骤。