Arange AQL Remve文档和边缘

时间:2016-07-19 17:54:59

标签: javascript arangodb aql

回到另一个arango问题。

是否有一种简单的方法可以删除文档及其所有边缘?这个解决方案是递归的吗?

再说一遍,我有类似下面的内容。

  • 圆圈存储在文档集合中。
  • Square存储在文档集合中。

然后我有两个边缘集合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 个答案:

答案 0 :(得分:1)

它的工作方式是您必须首先找出要删除的文档的所有ID,并将它与它们所在的集合保持一致。

收集完所有ID后,您需要为每个集合发出一个REMOVE语句,其中包含ID列表。

您可以在非常相似的问题Safe removal of vertexes in ArangoDB (using _ids)?中找到示例AQL查询如何实现此目的。