簡體   English   中英

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"));

我想要的是從循環迭代開始的頂點以及下一個頂點。 所以我想看的結果是

  1. A,B
  2. 公元前
  3. B,D
  4. C,F
  5. D,F

但是, 我得到的是

  1. A,B
  2. A,C
  3. 廣告
  4. A,E
  5. A,F
  6. A,F

看起來管道中的“ x”始終是管道中的第一個頂點,而不是循環的迭代中的第一個頂點,這正是我想要的。

看來這應該很容易,但我缺少一些簡單的東西,但我找不到它。

需要的是_()或“ IdentityPipe”

.as("x")
._()                            
.as("firstVertex")

那對我有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM