ArangoDB:AQL查询以获取两个特定节点之间的所有边

ArangoDB:AQL查询以获取两个特定节点之间的所有边,arangodb,aql,Arangodb,Aql,我有一个文档集合“节点”和一个边缘集合“属性”。 我正在尝试获取“属性”集合中的所有边,从:'node/582148'到:'node/582016' 我能设计的最简单的AQL查询如下: FOR v, e, p IN OUTBOUND 'node/582148' `attribute` FILTER e._to == 'node/582016' RETURN p 是否真的没有办法在一个方面做到这一点,比如: FOR v, e, p IN OUTBOUND 'node/582148

我有一个文档集合“节点”和一个边缘集合“属性”。 我正在尝试获取“属性”集合中的所有边,从:'node/582148'到:'node/582016'

我能设计的最简单的AQL查询如下:

FOR v, e, p IN OUTBOUND 'node/582148' `attribute`
    FILTER e._to == 'node/582016'
    RETURN p
是否真的没有办法在一个方面做到这一点,比如:

FOR v, e, p IN OUTBOUND 'node/582148' TO 'node/582016' `attribute` RETURN p
只能使用具有最短路径的“to”关键字。澄清:我只对节点之间的直接路径(1条边)感兴趣


感谢使用graph traversal,我建议使用以下AQL查询来获取所有输出边,该查询通过目标顶点键进行过滤:

FOR v, e IN OUTBOUND 'node/582148' `attribute`
FILTER v._key == '582016'
RETURN e
另一种方法是将边作为具有属性_-from和_-to的文档进行处理,而不进行图形遍历:

FOR e IN `attribute`
FILTER e._from == 'node/582148' && e._to == 'node/582016'
RETURN e

谢谢在第一个示例中,如果v不是“node”类型,我是否应该添加过滤器v._key==“node/582016”?否,v._key应该只包含文档的键,而不是它的集合名。
_key
只存储文档键,例如
“1234”
。文档键甚至不允许包含斜杠:
\u id
是集合名称、正斜杠和文档键的串联,例如
“node/1234”
。关于遍历。。。你认为有没有办法进一步优化这样一个查询?当我使用深度1..5时,我的查询大约需要28秒,有9个顶点集合和16个边集合,总共只有11764个对象(实体+链接)。我知道查找两个节点之间的所有路径是一项复杂的任务,但我正在寻找任何可以进行的优化。在进一步的项目中,我将需要深度,甚至像5..10,这将更加复杂。@DominikFranek我怀疑新的PRUNE函数(3.5中的新函数?)将在遍历情况下帮助您。见: