首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Gremlinpython中验证迭代边插入

在Gremlinpython中验证迭代边插入
EN

Stack Overflow用户
提问于 2020-06-05 19:31:23
回答 1查看 87关注 0票数 0

尝试迭代添加顶点和边。它似乎可以工作,没有错误,但我希望验证边也正确添加。

下面的循环至少插入了节点,如末尾的列表长度打印所示,但是边或者是1)没有插入,或者2)在列表中收集它们的方式是不正确的。

任何帮助都是非常感谢的!

代码语言:javascript
复制
def vertices01(nodename, rangelb, rangeub, prop1name, prop1val, prop2name):
    t = g.addV(nodename).property(prop1name, prop1val).property(prop2name, rangelb)
    for i in range(rangelb + 1, rangeub):
        t.addV(nodename).property(prop1name, prop1val).property(prop2name, i)
    t.iterate()

def edges01(from_propname, from_propval, to_propname, rangelb, rangeub, edge_name, edge_prop1name):
    to_propval = rangelb
    edge_prop1val = rangelb
    t = g.V().has(from_propname, from_propval).as_("a").V().has(to_propname, to_propval).as_("b").addE(edge_name).from_("a").to("b").property(edge_prop1name, edge_prop1val)
    for i in range(rangelb, rangeub):
        to_propval = i + 1
        edge_prop1val = i
        # changing this to t.has(...) seems to not influence the results (still 0 picked up by the loop)
        t.has(from_propname, from_propval).as_("a").V().has(to_propname, to_propval).as_("b").addE(edge_name).from_("a").to("b").property(edge_prop1name, edge_prop1val)
    t.iterate()

vertices01("ABC", 1, 21, "aa01", 1, "bb01")
edges01("aa01", 1, "bb01", 1, 10 , "aa01-to-bb01", "aa01-to-bb01-propX")

ls1 = []
ls1 = g.V().outE("aa01-to-bb01").has("aa01-to-bb01-propX", 2).toList()
print(len(ls1)) 

ls2 = []
ls2 = g.V().has("aa01", 1).toList()
print(len(ls2)) 

> results:
0
20

预期结果:

代码语言:javascript
复制
> results:
1
20

编辑:我在edges01循环中更改了这一位:

代码语言:javascript
复制
    t = g.V().has(from_propname, from_propval) ...

代码语言:javascript
复制
    t.has(from_propname, from_propval) ...

但结果仍然是0。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-07 09:13:00

每次在添加边的代码中使用t = g.V()...重新开始遍历。只有创建的最后一次遍历才会被迭代。在创建顶点的代码中,您正在扩展遍历。这就是不同之处。

已更新

你应该能够按照这些思路去做一些事情

代码语言:javascript
复制
t = g.V().has('some-property','some-value').as_('a').
      V().has('some-property','some-value').as_('b')

然后在循环中

代码语言:javascript
复制
t.addE('myedge').from_('a').to('b')
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62214365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档