2017-01-24 14 views
2

arangodb 3.1で深さnの2つの頂点間のすべてのパスを取得するにはどうすればよいですか? AQLドキュメントで見つかった唯一の可能性は最短パスでした。しかし、私はすべての道を手に入れたいと思っています。2つの頂点間のすべてのパスを見つける

ありがとうございました!次のAQLステートメントを使用することができ、既知の_id値と頂点の間の長さが正確nですべてのパスを取得するために

+0

http://stackoverflow.com/questions/29677086/arangodb-how-to-get-all-the-possible-paths-between-2-vertices – kyle

+0

ありがとう@kyleしかし、これはarangodb 3.1で動作していません – chhl

答えて

4

FOR target, unused, path IN @depth ANY @source edgeCollection 
    FILTER target._id == @target 
    RETURN path 

私はすぐに部品を説明してみましょう:

  • FOR target, unused, path =>戻り値を定義します。target =検索する頂点、unused =それを指している最後のエッジ、path =フォーマットの完全パス:{edges: [edge1, edge2, ..], vertices: [vertex1, vertex2, ...]}
  • IN @depth => exaktの深さを短くしないでください。nが返され、パスは返されなくなります。 @[email protected]でも、長さが最小から最大までのすべてのパスが返されます。
  • ANY =>検索方向、これはエッジの方向を無視し、また、エッジコレクションのINBOUND又はOUTBOUND
  • @source =>目標頂点ID
  • edgeCollection =>名を指定でき、またGRAPH "graphName"
  • することができます
  • FILTER target._id == @target =>正しい頂点が見つかったことを検証します。
  • RETURN path =>まあパスを返す;)
+0

ありがとう@mchacki!それが探していたものです!最初のパラメータターゲットには結果のすべての頂点が含まれていると思いました。 – chhl

関連する問題