Python克隆遍历的Gremlin

4

我正在使用gremlin-python连接到gremlin-server,并尝试逐步构建查询,但我卡住了。我有一个初始的查询部分如下:

query = g.V().hasLabel('<some_label>')

现在我想用这个查询做多件事情,首先我只想要一个计数:

query.count().next()

现在,如果我使用query变量执行其他操作,计数步骤就会在遍历中进行,因此以下类似的操作不起作用:
query.out('<some_edge_label>').valueMap().toList()

看文档似乎需要克隆遍历,所以我用以下内容替换了上面的内容:

query = g.V().hasLabel('<some_label>')

count_query = query.clone()
count_query.count().next()

但是,即使我克隆了query对象,当我打印字节码时,它仍然包含count()步骤。这是gremlin-python的预期行为吗?下面是一个完整的示例,展示每个步骤的字节码:

query = g.V().hasLabel('alabel')
print(query)
q_count = query.clone()
print(q_count.count())
print(query)

[['V'], ['hasLabel', 'alabel']]
[['V'], ['hasLabel', 'alabel'], ['count']]
[['V'], ['hasLabel', 'alabel'], ['count']]

我该如何在gremlin-python中克隆/复制遍历的开头以便重用它?

1
你使用的是哪个版本的Python客户端?在2020年6月发布的3.4.7(3.3.11)版本中,对深度克隆遍历领域进行了一些修复。 - Kelvin Lawrence
1
是的,那就是问题所在。 - cts
好的,我会快速回答并发布一个帖子,以防其他人遇到同样的问题。 - Kelvin Lawrence
2个回答

2

1

看起来这个问题是 gremlin-python 中的一个 bug,在版本 3.4.7 中已经修复。更新版本解决了我的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接