无法使用Gremlin控制台中的TinkerGraph按ID访问特定顶点

问题描述 投票:0回答:1

我无法通过执行g.V(3640).valueMap(true).unfold()来选择特定的顶点。任何包含g.V()命令中括号之间的ID的命令似乎都不起作用。

这就是我做的:

我是Graph数据库的新手,并尝试使用Gremlin控制台。我开始创建一个实例:

graph = TinkerGraph.open()
g=graph.traversal()

并通过导入.graphml数据库文件加载示例数据:

g.io(graphml()).readGraph('/full/path/to/air-routes-latest.graphml')

这似乎工作正常,因为计数给出了一个很好的结果

gremlin> g.V().count()
==>3642

不幸的是,以下不起作用:

gremlin> g.V(3640).valueMap(true).unfold()

我觉得这很奇怪,因为执行以下操作

gremlin> g.V()
==>v[3640]
==>v[2306]
...

ID似乎确实存在。我无法访问特定ID的任何想法?我尝试了不同的命令,但g.V()似乎工作正常,而g.V(3640)没有。是因为我使用TinkerGraph而不是Gremlin数据库,可能是什么问题?

编辑:

似乎我的id被保存为字符串,因为g.V("2").valueMap(true).unfold()确实给了我结果。

graph gremlin tinkerpop3 tinkergraph
1个回答
1
投票

我认为您可能对标识符的“类型”有疑问。我怀疑如果你这样做:

g.V(3640L)

你会得到你想要的顶点。默认情况下,TinkerGraph使用equals()处理id相等性,所以如果你试图在id为long的情况下找到一个整数,它就会像它不存在一样。如果您喜欢使用IdManager讨论的here配置,则可以修改该默认值。请注意,这也在Practical Gremlin中有更详细的讨论。

© www.soinside.com 2019 - 2024. All rights reserved.