我的测试图具有以下路径:test_score-属于->人。我能够使以下脚本正常工作。
graph = Graph()
conn = DriverRemoteConnection('ws://localhost:8182/gremlin', 'g') # should learn to open a new graph
gr = graph.traversal().withRemote(conn)
print(gr.V().hasLabel("test_score").out("belonged_to").path().by("score").by("name").toList())
已打印出
[[95,'marko'],[95,'vadas'],[88,'vadas'],[85,'marko'],[100, 'josh'],[80,'vadas'],[80,'josh'],[60,'josh'],[75,'marko']]
顶点test_score
具有属性'name'
和'score'
,我喜欢打印出这两个属性。我尝试了以下内容,但行却出错了。
print(gr.V().hasLabel("test_score").out("belonged_to").path().by(values("name","score")).by("name").toList())
错误:
NameError:未定义名称“值”。这是因为by() 只需要一个字符串参数。
如何实现为test_score顶点打印多个属性的目标。
谢谢。
答案 0 :(得分:1)
您步入正轨,但您可能需要将values()
建立为python中的全局函数-类似于:
from gremlin_python.process.graph_traversal import __ as AnonymousTraversal
values = AnonymousTraversal.values
然后values()
可用后,您需要稍微修改by()
调制器以以fold()
终止:
gr.V().hasLabel("test_score").
out("belonged_to").
path().
by(values("score", "name").fold()).
by("name").toList()
您需要fold()
才能将流减少为单个值(即List
)。