3

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

这就是我所做的:

我是图形数据库的新手,正在尝试使用 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()确实给了我结果。

4

1 回答 1

4

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

g.V(3640L)

你会得到你想要的顶点。默认情况下,TinkerGraph 处理 id 相等性,equals()因此如果您在 id 很长时尝试查找整数,它将表现得好像它不存在一样。如果您喜欢这里IdManager讨论的配置,您可以修改该默认值。请注意,这也在Practical Gremlin中进行了更详细的讨论。

于 2018-09-18T15:35:33.177 回答