我是Gremlin的新手。我正在尝试使用Gremlin在DSE图上构建图形。我能够创建顶点:
a = graph.addVertex(label, 'label1', 'key', 1)
b = graph.addVertex(label, 'label1', 'key', 2)
c = graph.addVertex(label, 'label2', 'key', 1)
d = graph.addVertex(label, 'label2', 'key', 2)
现在我想在两个节点之间自动添加边缘,其中属性'key'匹配的是不同的标签(即a和c之间以及b和c之间的创建和边缘)。我正在努力做到这一点。
我尝试了以下
g.V().hasLabel("label1").sideEffect{g.V().("label2").has("key",it.key).addEdge("link",it)}
但是我收到以下错误:
No signature of method: org.apache.tinkerpop.gremlin.process.traversal.traverser.B_O_Traverser.values() is applicable for argument types: (java.lang.String) values: [key]
有人可以帮助我解决这个问题吗? 提前谢谢
答案 0 :(得分:3)
嵌套g.V()
通常是一个坏主意。您可以使用单次遍历来解决问题:
g.V().hasLabel("label1").as("a").
V().hasLabel("label2").as("b").
where("a", eq("b")).by("key").
addE("link").from("a").to("b")
另请注意,您必须允许DSE Graph中的扫描才能进行此遍历。