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

时间:2018-09-18 15:27:47

标签: graph gremlin tinkerpop3 tinkergraph

我无法通过执行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()确实给了我结果。

1 个答案:

答案 0 :(得分:1)

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

g.V(3640L)

您将获得所需的顶点。默认情况下,TinkerGraph使用equals()处理id相等,因此,如果您尝试在id较长时查找整数,它将表现为不存在。如果愿意,可以使用讨论过的hereIdManager配置来修改该默认值。请注意,这在Practical Gremlin中也有更详细的讨论。