我已经导入了图形,可以确认顶点和边的数量与应该存在的数量匹配。我在图形上运行simplepath()计算,我的第一个问题是如何访问路径数组或映射返回的任何内容,我想我理解了,因为我添加了.toList并将其打印到控制台,但是我只是得到[]空数组?
我在做什么错,我需要访问从路径返回的结果集?
我不在gramlin控制台中以Java运行的查询是:
g.V().has("id", "FirstVertexIdValue").shortestPath().with(ShortestPath.target, __.has("id", "EndVertexIdValue")).with(ShortestPath.distance, "weight").toList();
我也运行以下命令,但仍返回一个空数组:
g.V("startVertexId").out().simplePath().until(hasId("endVertexId").path().limit(1);
打印systemOut时的响应为[]
没有一些示例数据,很难分辨出什么是完全错误的,但是根据您所问的格雷姆林宫,有些事情要考虑:
shortestPath()
-step是一个OLAP step,因此要求您使用g
定义withComputer()
-可以找到一个示例here。T.id
中使用时称为has()
)。也许找不到初始的起始顶点? until()
条件,但未指定repeat()
操作。[当遍历没有返回期望值时,我尝试将它们简化到可以看到遍历正在过滤掉期望的遍历器的程度。换句话说,打开Gremlin Console并连接图形。确保g.V("startVertexId")
返回所需的顶点。对结果满意后,添加一个步骤,运行g.V("startVertexId").out()
并进行验证。继续该模式,直到找到结果没有返回的地方。您也可以使用profile()
步骤运行遍历,它应该显示遍历遍历何处,但是有时通过将遍历分开并简化它会更容易识别。