我試圖修剪一個遍歷。當我使用AQL GRAPH_TRAVERSAL函數時,它按預期工作。但是,使用GRAPH_TRAVERSAL_TREE更改GRAPH_TRAVERSAL函數會擴展整個樹,超過filterVertices示例。GRAPH_TRAVERSAL_TREE忽略filterVertices,GRAPH_TRAVERSAL不是
當我從GRAPH_TRAVERSAL移動到GRAPH_TRAVERSAL_TREE時,是否需要更改一些內容?
我試圖修剪一個遍歷。當我使用AQL GRAPH_TRAVERSAL函數時,它按預期工作。但是,使用GRAPH_TRAVERSAL_TREE更改GRAPH_TRAVERSAL函數會擴展整個樹,超過filterVertices示例。GRAPH_TRAVERSAL_TREE忽略filterVertices,GRAPH_TRAVERSAL不是
當我從GRAPH_TRAVERSAL移動到GRAPH_TRAVERSAL_TREE時,是否需要更改一些內容?
在試圖重現您的問題時,我陷入了一個類似的陷阱:我忘記了GRAPH_TRAVERSAL_TREE()
- 函數的一個參數,然後返回比預期更多的結果。當參數的數目是正確的,我們可以比較traversal over the city graph:
未經過濾的,我們也將看到Paris
並在結果集中背後的節點:
FOR e IN GRAPH_TRAVERSAL_TREE('routeplanner',
'germanCity/Hamburg',
'outbound',
'connection') RETURN e"
如果我們篩選isCapital == false
,這些節點將失蹤:
FOR e IN GRAPH_TRAVERSAL_TREE('routeplanner',
'germanCity/Hamburg',
'outbound',
'connection',
{filterVertices: [{isCapital: false }]}) RETURN e
請注意與'connection'
字符串,它指定如何命名在結果子屬性參數。如果您忘記了它,選項對象將取代它的位置,並且您將在結果中看到諸如'[object Object]'
之類的關鍵名稱,並且過濾器不起作用。
FOR V IN GRAPH_TRAVERSAL('gdp2_graph',[{_ id:'pmsite/527362551703'}],'outbound',{strategy:'depthfirst',edgeCollectionRestriction:'pm_child',vertexFilterMethod:['prune','exclude '],filterVertices:[{kind:'site'},{kind:'path_1'},{kind:'path_2'},{kind:'project'}]})RETURN v This works。但是,我想獲得父親<->子關係,所以我將其更改爲GRAPH_TRAVERSAL_TREE,它給了我樹,但沒有停在GRAPH_TRAVERSAL所在的相同點上。 我已經得到了替代形式的FOR .. IN給我我需要的東西,但我只是想提醒你這個異常。 –
ggendel
正如上一段所述,您需要在模式匹配的對象之前添加'connectName'參數。但爲了確保模式匹配遍歷在GRAPH_TRAVERSAL(_TREE)之上, – dothebart