当前位置: 首页 > 知识库问答 >
问题:

Gremlin:如何在同一边缘向后遍历

莘聪
2023-03-14

我有一个具有两个顶点的简单图,ID为“a”和“b”。

我已将标签为“foo”的边从“a”分配给“b”

小妖精

==

==

小妖精

==

我的问题是:如何沿同一条边向后移动?例如,如果一个查询遍历到一个出站顶点,那么该查询如何穿越同一条边返回到入站顶点?

我的查询如下:

g、 E('04b4b9fd-2f20-751d-5673-5aa9d7ce0285').outV()。作为('outV')…[要获取相同边缘的inV,请在此处]

共有1个答案

董飞
2023-03-14

有很多不同的方法可以做到这一点。下面是一些有希望启发你的答案。在以下情况下,您可能不应该指望顶点的返回顺序,但可以这样做:

gremlin> g.E(11).bothV()
==>v[4]
==>v[3]

要强制订购,您可以执行一个union():

gremlin> g.E(11).union(inV(),outV())
==>v[3]
==>v[4]

您可以始终project()您的结果:

gremlin> g.E(11).project('in','out').by(inV()).by(outV())
==>[in:v[3],out:v[4]]

如果你需要先用outV()做些什么,然后回到边缘,然后在inV()上遍历,你可以用as()标记E()步骤:

gremlin> g.E(11).as('e').outV().hasLabel('person').select('e').inV()
==>v[3]

希望这些例子能有所帮助。

 类似资料:
  • 我有图表(见下图)。我使用A中的gremlin,需要沿着边缘“impacts”和“Similato”循环所有树。 所以我需要这样的东西: 此查询的问题是,关系“相似”有时可能是边缘外,有时可能是边缘内(见图),这取决于应用程序当前存储数据的方式。我不能简单地使用“两者”(g. v(A. id).都('影响','相似')...)来检索边,因为另一方面,我只需要“影响”关系的边缘。也有可能,某些顶点缺

  • 我试图使用Gremlin从一个起始节点向外遍历到连接X度内的所有连接节点。连接的方向无关紧要,所以我使用了函数。我还希望能够防止遍历与特定标签相交。这是一个示例图。 到目前为止,我进行的遍历如下所示: 然而,这并不是我所寻找的。我想要一些实际上可以防止遍历者在必须跨越指定边缘时触及顶点的东西。我当前的实现过滤具有传入边缘的顶点,但在某些情况下,如果遍历者跨越不同的边缘到达那里,我可能仍然希望该顶点

  • 我有一个这样的图表 也就是说,每个“事件”顶点有两条传入边:一条终止于“工程师”顶点,另一条终止于“生产者”顶点。但生产者顶点的函数因边缘标签而异。 我想得到原始制作人,事件,工程师和终止制作人。 我有一个小精灵的密码: 也就是说,我选择了一个给定的生产者,获取事件和工程师,然后返回关于每个顶点的一些细节。 我还希望生产者与同一查询中的事件对齐,但不确定如何做到这一点。 非常感谢您的帮助。

  • 我正在azure中使用cosmos图形数据库。 有人知道是否有一种方法可以在两个顶点之间添加一条边,只有当它不存在时(使用gremlin图查询)? 我可以在添加顶点时这样做,但不能使用边。我从这里获取了执行此操作的代码: 谢谢

  • 我有一个顶点上插工作和一个边缘上插工作在2个单独的遍历中。是否可以将2合并为1遍历?我尝试过,但收到错误。 a=自身g.V()。has('account',id',account-111111111').fold().coalesce(.unfold(),.addV('account').property(T.id,'account-111111111'))。has('customer','id'