簡體   English   中英

Gremlin Tinkerpop 返回 object 路徑,您如何訪問各個頂點

[英]Gremlin Tinkerpop returns an object Path, how do you access the individual vertices

我可以看到這已被問過幾次,但我看不到適合我的答案。

我在 Java 應用程序中使用它,我想返回一個 ArrayList 的頂點或僅包含頂點 iD 的字符串。 我必須使用 Path() 步驟,因為我需要以正確順序返回的頂點,但是我只得到一個包含 2 個對象的列表,源頂點看起來像 Object,整個路徑看起來像 Object,我可以不操縱或使用數據?

我的遍歷是:

List<Object> routeList;

routeList = g.V(sourceID).shortestPath().with(ShortestPath.edges, Direction.OUT)
                .with(ShortestPath.distance, "weight").with(ShortestPath.target, hasId(targetId))
                .with(ShortestPath.includeEdges, false).path().unfold().toList();

列表的output為:

v[L00-041]
path[v[L00-041], v[L00-042], ...etc.... v[L00-043], v[L00-031]]

我真的需要以可用格式返回路徑。 我確定之前有人在這個 position 中,可以幫助我。 謝謝。

一般來說,對於 path() 查詢,Gremlin 會返回一個 Path object 給你,你可以遍歷它。 這是來自 Gremlin 控制台的示例。

gremlin> p = g.V(1).out().limit(1).path().next()
==>v[1]
==>v[135]
gremlin> p.class
==>class org.apache.tinkerpop.gremlin.process.traversal.step.util.ImmutablePath
gremlin> p[1]
==>v[135]
gremlin> p[0]
==>v[1]       
gremlin> p.size()
==>2
gremlin> for (e in p) {println(e)}
v[1]
v[135]    

相關的 JavaDoc 在這里:

https://tinkerpop.apache.org/javadocs/current/full/org/apache/tinkerpop/gremlin/process/traversal/step/util/ImmutablePath.html

https://tinkerpop.apache.org/javadocs/current/full/org/apache/tinkerpop/gremlin/process/traversal/Path.html

使用 Java 你可以做這樣的事情。

List<Path> p = g.V("1").out().limit(1).path().toList();
p.get(0).forEach(e -> System.out.println(e));

但是,在使用 shortestPath() 步驟時,返回的結果是包含起始頂點和走過的路徑的 ReferencePath。 您可以按如下方式從控制台訪問它,也可以類似於上面來自 Java 的示例。與 Path 一樣,ReferencePath 是可迭代的。

gremlin> routeList.class
==>class org.apache.tinkerpop.gremlin.structure.util.reference.ReferencePath
gremlin> routeList[0].class
==>class org.apache.tinkerpop.gremlin.structure.util.reference.ReferenceVertex
gremlin> routeList[1].class
==>class org.apache.tinkerpop.gremlin.structure.util.reference.ReferencePath
gremlin> for (v in routeList[1]) {println v}
v[3]
v[8]
v[44]

這是 ReferencePath 的 JavaDoc https://tinkerpop.apache.org/javadocs/current/full/org/apache/tinkerpop/gremlin/structure/util/reference/ReferencePath.html

暫無
暫無

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

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