我无法通过执行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()
确实给了我结果。
答案 0 :(得分:1)
我认为您可能对标识符的“类型”有疑问。我怀疑如果您这样做:
g.V(3640L)
您将获得所需的顶点。默认情况下,TinkerGraph使用equals()
处理id相等,因此,如果您尝试在id较长时查找整数,它将表现为不存在。如果愿意,可以使用讨论过的here的IdManager
配置来修改该默认值。请注意,这在Practical Gremlin中也有更详细的讨论。