ArangoDB:查找路径中的最后一个节点

ldioqlga  于 2022-12-09  发布在  Go
关注(0)|答案(1)|浏览(201)

我是Arangodb的新手,我正在尝试获取图中的最后一个/叶节点(我猜是顶点)。

现在我想从6010142开始遍历。查询应该返回6010625,因为它是通过6010145可以到达的最后一个节点。但是查询是什么样子的呢?
我已经试过了:

FOR v, e, p IN 1..5 OUTBOUND {_id: 'nodes/6010142'} GRAPH 'test' RETURN v

但它也返回6010145。此外,它被限制为maxDepth为5,但我的图形可以超过限制。所以我还需要一个解决方案,工程的任何深度。希望任何人都可以帮助我:-)

u5rb5r59

u5rb5r591#

我也刚开始使用AQL,但这可能会有所帮助。

FOR v IN 1..5 OUTBOUND {_id: 'nodes/6010142'} GRAPH 'test' OPTIONS {uniqueVertices: 'global', bfs: true}
FILTER LENGTH(FOR vv IN OUTBOUND v GRAPH 'test' LIMIT 1 RETURN 1) == 0  
RETURN v

这个方法遵循an older ArangoDB cook book (p. 39)来寻找叶子节点,filter行取第一行找到的连接节点,并进行第二次遍历来检查这是否是一个叶子节点。
如果您只对唯一的叶节点感兴趣,而不是对这些节点的所有不同路径感兴趣,则OPTIONS {uniqueVertices: 'global', bfs: true}部分是一种优化。
关于maxDepth,我会使用一个足够大的数字,最坏的情况是图中的节点数。
(The您发布的图表和您的描述在边缘方向上似乎不一致。也许您需要使用INBOUND。)

相关问题