AQL(arangodb 3.1.22)でグラフトラバーサルクエリを作成しています。返されるパスの中には、パスオブジェクト内でいずれの辺にも接続されていない頂点がありますパスオブジェクト内で返されます(つまり、エッジの_from/_toプロパティが頂点_idと一致しません)。パスフィルタリングを使用したAQLトラバース
私は、パスオブジェクトがそのパス上の頂点とエッジだけを返すという前提のもとで作業していました。これは誤った仮定ですか?
AQL(arangodb 3.1.22)でグラフトラバーサルクエリを作成しています。返されるパスの中には、パスオブジェクト内でいずれの辺にも接続されていない頂点がありますパスオブジェクト内で返されます(つまり、エッジの_from/_toプロパティが頂点_idと一致しません)。パスフィルタリングを使用したAQLトラバース
私は、パスオブジェクトがそのパス上の頂点とエッジだけを返すという前提のもとで作業していました。これは誤った仮定ですか?
あなたは文字列としての出発点を渡す場合は、頂点はトラバーサルのためにまったく存在していません:
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にすることができます。
正しいと仮定すると、パスには頂点とエッジのみが含まれている必要があります。あなたはあなたの質問を投稿できますか? – mpv1989