Gremlin 获取每个循环的第一个顶点
Gremlin get first vertex of each loop
我正在遍历这样的图表:
像这样在 Gremlin 中广度优先
pipe.start(unProcessed)
.as("x")
.bothE()
.as("existingEdge")
.bothV()
.hasNot("processed",true)
.loop("x", new PipeFunction<LoopPipe.LoopBundle<Vertex>, Boolean>() {
public Boolean compute(LoopPipe.LoopBundle<Vertex> loopBundle) {
return true;
}
}, new PipeFunction<LoopPipe.LoopBundle<Vertex>, Boolean>() {
public Boolean compute(LoopPipe.LoopBundle<Vertex> loopBundle) {
return true;
}
})
.as("newVertex")
.select(Arrays.asList("x","newVertex"));
我想要的是循环本次迭代开始的顶点,以及下一次。所以结果我想看是
- A,B
- B,C
- B,D
- B,E
- C,F
- D,F
然而,我得到的是:
- A,B
- A,C
- A,D
- A,E
- A,F
- A,F
看起来管道中的 "x" 始终是管道中的第一个顶点,而不是循环迭代中的第一个顶点,这正是我想要的。
看起来这应该很容易,我遗漏了一些简单的东西,但我找不到它。
需要的是 _() 或 "IdentityPipe"
.as("x")
._()
.as("firstVertex")
这对我有用。
我正在遍历这样的图表:
像这样在 Gremlin 中广度优先
pipe.start(unProcessed)
.as("x")
.bothE()
.as("existingEdge")
.bothV()
.hasNot("processed",true)
.loop("x", new PipeFunction<LoopPipe.LoopBundle<Vertex>, Boolean>() {
public Boolean compute(LoopPipe.LoopBundle<Vertex> loopBundle) {
return true;
}
}, new PipeFunction<LoopPipe.LoopBundle<Vertex>, Boolean>() {
public Boolean compute(LoopPipe.LoopBundle<Vertex> loopBundle) {
return true;
}
})
.as("newVertex")
.select(Arrays.asList("x","newVertex"));
我想要的是循环本次迭代开始的顶点,以及下一次。所以结果我想看是
- A,B
- B,C
- B,D
- B,E
- C,F
- D,F
然而,我得到的是:
- A,B
- A,C
- A,D
- A,E
- A,F
- A,F
看起来管道中的 "x" 始终是管道中的第一个顶点,而不是循环迭代中的第一个顶点,这正是我想要的。
看起来这应该很容易,我遗漏了一些简单的东西,但我找不到它。
需要的是 _() 或 "IdentityPipe"
.as("x")
._()
.as("firstVertex")
这对我有用。