2016-07-19 30 views
2

回到另一個arango問題。Arange AQL Remve文檔和邊緣

有沒有一種簡單的方法來刪除文檔及其所有邊緣?這個解決方案是遞歸的嗎?

再次讓我說我有類似下面的東西。

  • Circle存儲在文檔集合中。
  • 正方形存儲在文檔集合中。

然後,我有兩個邊緣集合HAS_CIRCLE和HAS_SQUARE,它們對應於各種指示的\

Circle A 
    /  \ 
Square 1 Circle B 
      / \   \ 
     Circle C Square 2 Square 3 
    /
    Square 4 

如果我想刪除Circle B.那麼我也想刪除Circle C,Square 2,Square 3和Square 4.以及所有邊緣。

所以基本上我會結束了。

Circle A 
    / 
Square 1 

現在我的方法是獲取Circle C的邊緣和相關文檔的所有關鍵點。然後我用javascript遞歸執行此操作。我使用arangojs模塊,一旦我有所需,就使用removeByKeys

不確定是否有我失蹤的魔法。

回答

1

它的工作原理,你必須先搞清楚要刪除,並保持它連同他們所在的集合文件的所有ID的方式。

一旦你收集了所有的ID,你需要爲每個集合發出一個REMOVE聲明和一個ID列表。

您可以在非常類似的問題Safe removal of vertexes in ArangoDB (using _ids)?中找到示例AQL查詢如何實現此目的。