gremlin python 克隆遍历
gremlin python clone traversal
我正在使用 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']]
我要如何 clone/copy 开始遍历才能在 gremlin-python 中重用它?
看起来这个问题是 gremlin-python 中的一个错误,并已在版本 3.4.7 中修复。更新版本解决了我的问题。
在 3.4.7 (3.3.11) [1] [2] Apache TinkerPop 版本(2020 年 6 月)中,深度克隆遍历领域有一些修复。安装其中一个驱动程序应该会有所帮助。
[1] https://github.com/apache/tinkerpop/blob/master/CHANGELOG.asciidoc
我正在使用 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']]
我要如何 clone/copy 开始遍历才能在 gremlin-python 中重用它?
看起来这个问题是 gremlin-python 中的一个错误,并已在版本 3.4.7 中修复。更新版本解决了我的问题。
在 3.4.7 (3.3.11) [1] [2] Apache TinkerPop 版本(2020 年 6 月)中,深度克隆遍历领域有一些修复。安装其中一个驱动程序应该会有所帮助。
[1] https://github.com/apache/tinkerpop/blob/master/CHANGELOG.asciidoc