【问题标题】:Add edge between existing nodes in Gremlin在 Gremlin 中的现有节点之间添加边
【发布时间】:2013-06-11 15:29:51
【问题描述】:

我是 Gremlin 的新手,只是想构建一个基本图表。我已经能够在新顶点上做一个基本的 addEdge,即

gremlin> v1 = g.addVertex()
==>v[200004]
gremlin> v2 = g.addVertex()
==>v[200008]
gremlin> e = g.addEdge(v1, v2, 'edge label')
==>e[4c9f-Q1S-2F0LaTPQN8][200004-edge label->200008]

我还能够在通过 id 查找的顶点之间创建一条边:

gremlin> v1 = g.v(200004)
==>v[200004]
gremlin> v2 = g.v(200008)
==>v[200008]
gremlin> e = g.addEdge(v1, v2, 'edge label')
==>e[4c9f-Q1S-2F0LaTPQN8][200004-edge label->200008]

但是,我现在想根据多个属性查找顶点,这就是它变得棘手的地方。为了查找正确的顶点,我对.has 进行了两次调用。似乎找到了正确的顶点,但添加边失败。

gremlin> v1 = g.V.has("x",5).has('y",7)
==>v[200004]
gremlin> v2 = g.V.has("x",3).has('y",5)
==>v[200008]

gremlin> e = g.addEdge(v1, v2, 'edge label')
No signature of method: groovy.lang.MissingMethodException.addEdge() is applicable for argument types: () values: []

根据属性值查找,在两个现有顶点之间添加简单边的最简单方法是什么?

【问题讨论】:

    标签: gremlin


    【解决方案1】:

    关键问题是.has返回一个Pipe:为了获取特定的顶点实例,对.next()的简单调用就可以了:

    gremlin> v1 = g.V.has("x",5).has('y",7).next()
    ==>v[200004]
    gremlin> v2 = g.V.has("x",3).has('y",5).next()
    ==>v[200008]
    
    gremlin> e = g.addEdge(v1, v2, 'edge label')
    ==>e[4c9f-Q1S-2F0LaTPQN8][200004-edge label->200008]
    

    请注意,.next() 只会返回管道中的下一项。在这种情况下,任何与属性值匹配的附加顶点都将被忽略。

    【讨论】:

    猜你喜欢
    • 2020-12-13
    • 1970-01-01
    • 2022-11-09
    • 2022-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多