Graph Gremlin:在具有相同属性的节点之间添加边

Graph Gremlin:在具有相同属性的节点之间添加边,graph,gremlin,tinkerpop,edges,datastax-enterprise-graph,Graph,Gremlin,Tinkerpop,Edges,Datastax Enterprise Graph,我对小精灵很陌生。我正在尝试使用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”匹


我对小精灵很陌生。我正在尝试使用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]
有人能在这个问题上帮助我吗? 提前谢谢你

嵌套的
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图形中进行扫描,才能进行此遍历。

非常感谢!这正是我们想要的,它帮了我很多!