簡體   English   中英

ArrangoDB - 從給定值獲取所有可能的路徑

[英]ArrangoDB - Get All Possible Path From Given Value

我想要一個查詢來獲取從給定頂點開始的所有可能路徑。

例如。 如下圖所示, 在此處輸入圖像描述

我想使用 Query 查找從“Covid/12109”開始的所有路徑。

所以它像這樣返回

    { "_from":"Covid/12109","_to":"Covid/12110" }
    { "_from":"Covid/12110","_to":"Covid/12111" }
    { "_from":"Covid/12110","_to":"Covid/12115" }
    { "_from":"Covid/12110","_to":"Covid/12114" }
    { "_from":"Covid/12111","_to":"Covid/12115" }
    { "_from":"Covid/12111","_to":"Covid/12114" }
    { "_from":"Covid/12112","_to":"Covid/12110" }
    { "_from":"Covid/12112","_to":"Covid/12113" }
    { "_from":"Covid/12112","_to":"Covid/12114" }

如果我想從“Covid/12110”開始,那么它應該像這樣返回

    { "_from":"Covid/12110","_to":"Covid/12111" }
    { "_from":"Covid/12110","_to":"Covid/12115" }
    { "_from":"Covid/12110","_to":"Covid/12114" }
    { "_from":"Covid/12111","_to":"Covid/12115" }
    { "_from":"Covid/12111","_to":"Covid/12114" }
    { "_from":"Covid/12112","_to":"Covid/12110" }
    { "_from":"Covid/12112","_to":"Covid/12113" }
    { "_from":"Covid/12112","_to":"Covid/12114" }

如果我想從“Covid/12112”開始,那么它應該像這樣返回

    { "_from":"Covid/12112","_to":"Covid/12110" }
    { "_from":"Covid/12112","_to":"Covid/12113" }
    { "_from":"Covid/12112","_to":"Covid/12114" }
    { "_from":"Covid/12110","_to":"Covid/12111" }
    { "_from":"Covid/12110","_to":"Covid/12115" }
    { "_from":"Covid/12110","_to":"Covid/12114" }
    { "_from":"Covid/12111","_to":"Covid/12115" }
    { "_from":"Covid/12111","_to":"Covid/12114" }

圖遍歷是你的朋友。 有幾種方法可以做到這一點,但您可以從以下開始:

FOR c IN Covid
    FILTER c._key == '12109'
    FOR v,e IN 1..9 OUTBOUND c
        `has`
        OPTIONS { uniqueVertices: true }
        RETURN e

邊緣集合的名稱('has')很棘手,因為HAS是一個 AQL 關鍵字(請參閱有關使用關鍵字命名事物的文檔)。 我已將它包含在反引號(AQL 轉義字符)中,但您也可以創建一個 命名的 graph ,它(我相信)更加靈活。

查看查詢:

  • 我們首先在“Covid”集合中找到與鍵匹配的文檔。 這是可選的,您還可以將圖形遍歷中的“c”與“Covid/12109”之類的文檔 ID 交換
  • FOR v,e表示要返回的“頂點” v和“邊” e
  • 1..9是要執行的遍歷“跳轉”次數。 這可以是任何數字 ( 2 ) 或范圍 ( 5..27 )
  • OUTBOUND是指要遍歷的路徑方向。 這里的其他選項是OUTBOUNDANY
  • { uniqueVertices: true }告訴引擎跟蹤它返回的頂點,而不是在 output 上重復它們。 此處查看文檔
  • RETURN e將返回邊緣(“有”)文檔。 RETURN v將返回頂點(“Covid”)文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM