我想使用Java中的Gremlin修改JanusGraph中通过具有 some label 的边连接的所有顶点的 some property 。我尝试了以下方法:
public void setAllProperties(JanusGraphTransaction janusGraphTransaction) {
GraphTraversal<Vertex, Vertex> traversal = janusGraphTransaction.traversal().V();
traversal.has("SomeLabel", "SomeProperty", 0)
.repeat(out("SomeEdgeLabel"))
.property("SomeProperty", true)
.until(outE("SomeEdgeLabel").count().is(0));
}
但不修改任何顶点。我尝试在使用 repeat ...直到遍历时使用谷歌搜索来修改属性,但没有成功。有什么建议吗?
答案 0 :(得分:1)
首先,我认为您需要iterate()
遍历-参见tutorial-因此:
public void setAllProperties(JanusGraphTransaction janusGraphTransaction) {
GraphTraversal<Vertex, Vertex> traversal = janusGraphTransaction.traversal().V();
traversal.has("SomeLabel", "SomeProperty", 0)
.repeat(out("SomeEdgeLabel"))
.property("SomeProperty", true)
.until(outE("SomeEdgeLabel").count().is(0)).iterate();
}
然后,将property()
移到repeat()
内:
public void setAllProperties(JanusGraphTransaction janusGraphTransaction) {
GraphTraversal<Vertex, Vertex> traversal = janusGraphTransaction.traversal().V();
traversal.has("SomeLabel", "SomeProperty", 0)
.repeat(out("SomeEdgeLabel").property("SomeProperty", true))
.until(outE("SomeEdgeLabel").count().is(0)).iterate();
}
property()
不是Map
步骤的一种-它只是将Vertex
传递给您,因此遍历仍然有效。