如何删除ArangoDb中的所有集合和文档

时间:2016-01-17 18:16:58

标签: arangodb

我正在尝试与Arango组建一个单元测试设置。为此,我需要能够围绕每个测试重置测试数据库。

我知道我们可以直接从REST API中删除数据库,但文档中提到创建和删除可能“需要一段时间”。

这是建议的方式进行这种设置还是有AQL语句来做类似的事情?

4 个答案:

答案 0 :(得分:6)

例如,您可以检索all collections(不包括系统版)和droptruncate列表。后者将删除所有文档并保留索引。或者,您可以使用AQL REMOVE声明。

答案 1 :(得分:5)

经过一些与类似需求的斗争后,我找到了这个解决方案:

for (let col of db._collections()) {

    if (!col.properties().isSystem) {
        db._drop(col._name);
    }
}

答案 2 :(得分:2)

创建数据库可能确实需要一段时间(几秒钟)。如果在单个测试设置中设置和拆除每个测试的环境太昂贵,则有以下选项:

  • 每个测试套件(包含多个测试)仅创建和删除一个专用测试数据库,并为每个测试创建/删除所需的集合。在许多情况下,这已经证明足够快,但这取决于每个测试套件中包含多少测试。

  • 不要创建和删除专用测试数据库,而只是让每个测试都创建并删除所需的集合。这是最快的选择,如果您在新数据库中开始每个测试运行,它应该足够好。但是,它需要测试才能正确清理所有内容。这通常没有问题,因为测试通常会使用专用的集合。图表数据有一个例外:创建命名图表会将图形描述存储在_graphs集合中,并且必须再次删除该图表。

答案 3 :(得分:2)

执行以下AQL查询会删除集合 yourcollectionname 中的所有文档:

FOR u IN yourcollectionname
  REMOVE u IN yourcollectionname

https://docs.arangodb.com/3.0/AQL/Operations/Remove.html