2017-07-20 12 views
1

AQL(arangodb 3.1.22)でグラフトラバーサルクエリを作成しています。返されるパスの中には、パスオブジェクト内でいずれの辺にも接続されていない頂点がありますパスオブジェクト内で返されます(つまり、エッジの_from/_toプロパティが頂点_idと一致しません)。パスフィルタリングを使用したAQLトラバース

私は、パスオブジェクトがそのパス上の頂点とエッジだけを返すという前提のもとで作業していました。これは誤った仮定ですか?

+0

正しいと仮定すると、パスには頂点とエッジのみが含まれている必要があります。あなたはあなたの質問を投稿できますか? – mpv1989

答えて

0

あなたは文字列としての出発点を渡す場合は、頂点はトラバーサルのためにまったく存在していません:

FOR v, e IN 1..10 OUTBOUND "nodes/non-existing-start" edges 
    RETURN { vertex: v, _from: e._from, _to: e._to } 

データ(edgesでコレクションnodesとエッジの頂点):

non-existing-start 
     | 
     v 
non-existing-1 
     | 
     v 
non-existing-2 
     | 
     v 
non-existing-3 

エッジインデックスを使用して存在するエッジ(_fromおよび_toのプロパティ)に沿って移動します。コレクションnodesが存在する必要がありますが、_fromおよび_toで参照されている頂点が実際にそのコレクションに存在するかどうかはテストされません。クエリの結果は次のとおりです。あなたが見ることができるように

[ 
    { 
    "vertex": null, 
    "_from": "nodes/non-existing-start", 
    "_to": "nodes/non-existing-1" 
    }, 
    { 
    "vertex": null, 
    "_from": "nodes/non-existing-1", 
    "_to": "nodes/non-existing-2" 
    }, 
    { 
    "vertex": null, 
    "_from": "nodes/non-existing-2", 
    "_to": "nodes/non-existing-3" 
    } 
] 

、頂点はnullているので、彼らは存在しません。

一貫性を確保するために頂点を削除するときには、general-graphモジュールをdelete edges connected to a vertexにすることができます。

関連する問題