3

次のようなクエリを実行しています。

FOR v, e IN 1..10 ANY @start GRAPH @graph
    FILTER e.someCondition
    RETURN v

私が予想していたのは、 が である場合e.someConditionfalse問題のエッジはトラバースされないということです (そして推移的に、単独で到達可能な他のすべての頂点とエッジeは決して訪問されないでしょう)。

ただし、何が起こるかは、eスキップされるだけで、トラバーサルはそのパスを続行するようです。

では、AQL を使用してエッジ プロパティによってグラフ トラバーサルの境界を設定するにはどうすればよいでしょうか。

4

1 に答える 1

3

クエリは、v、e、および p をサポートします。ここで、p はクエリがたどるパスです。

ArangoDBのドキュメントには、いくつかの例が示されています。

これを使用して、パス内の指定された深さで特定のノードを除外しましたが、ノードの深さを指定する必要がありますp.vertices[0].something != 'value'

もう 1 つ注目したいのは、クエリがパスをたどる際に評価される「カスタム ビジター」関数の操作です。

この良いブログ投稿とこのArangoDB ガイドは、実際の例をいくつか示しており、サンプルを機能させるために読んで努力する価値があります。これらの関数を使用してパス内のデータを要約し、パス内の頂点のプロパティによって集計しましたが、これを使用してカスタム パスをたどることもできます。

これは、グラフをトラバースするときに続く計算に大きな柔軟性を与えるため、努力する価値があります。分岐を除外したり、特定の要件を満たす分岐のみを含めたり、経路に関するデータを集計したりできます。

それが役立つことを願っています。

于 2016-06-15T05:25:09.483 に答える