我對圖概念和arangodb很新。我打算在一個與通信分析相關的項目中使用它們兩個。我已經設置了數據以適應一個文檔集合命名爲object
,在我object
數據結構命名爲object_routing
arangodb aql有效地從startvertex穿過endvertex並找到它們之間的連接tarversing
一個邊緣收集在arangodb需要如下
{
"img": "assets/img/default_message.png",
"label": "some label",
"obj_id": "45a92a7344ee4f758841b5466c010ed9",
"type": "message"
}
...
{
"img": "assets/img/default_person.png",
"label": "some label",
"obj_id": "45a92a7344ee4f758841b5466c01111",
"type": "user"
}
我
object_routing
數據結構
是如下
{
"message_id": "no_data",
"source": "45a92a7344ee4f758841b5466c010ed9",
"target": "45a92a7344ee4f758841b5466c01111",
"type": "has_contacted"
}
與_from : object/45a92a7344ee4f758841b5466c010ed9
和_to : object/45a92a7344ee4f758841b5466c01111
object
的數據總和爲23k,而object_routing
爲127k。我的問題是,我怎樣纔能有效地遍歷從起始頂點到結束頂點,這樣我就可以獲得所有連接的頂點和它的邊緣以及它們的子節點等,直到它們之間沒有什麼可以再遍歷的東西?
恐怕我的問題是不夠清楚,我圖概念的理解是不正確的方向,請多多包涵
注:BFS算法不是一種選擇,因爲這不是我所需要的。如果可能的話,我想獲得最長的路徑。我的arangodb當前版本是3.1.7在1個協調器和3個數據庫服務器的集羣上運行
你想從查詢遍歷中得到什麼結果?你是否想要找到兩個頂點之間的所有可能的邊或所有可能的頂點?查看ArangoDB網站上的[遍歷頁面](https://docs.arangodb.com/devel/AQL/Graphs/Traversals.html),看看是否有幫助。該命令將爲您提供頂點文檔數組和邊數組。您仍然可以使用類似於'FILTER LAST(頂點).obj_id =='something''的東西過濾結果,其中頂點數組的LAST'值將成爲INBOUND'遍歷路徑的始發頂點。你需要什麼? –
hi @DavidThomas對於遲到的回覆感到抱歉,我認爲它是「找到兩個頂點之間的所有可能的邊」,因爲我可以在給定的兩個頂點之間具有所有可能的連接頂點,不是嗎?我想要的輸出是兩個給定節點之間的所有連接頂點和邊,以便我可以繪製結果圖並希望告訴最終用戶,如果兩個給定頂點以某種方式有點連接 –
但我不確定如何完成此操作這是否可以通過實現一些算法來實現?或者僅僅使用圖遍歷在arangodb中就足夠了?再一次,任何指針會非常有幫助 –